catalystwan 0.40.1.dev7__py3-none-any.whl → 2.0.0a0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- catalystwan/core/__init__.py +2 -0
- catalystwan/core/abstractions.py +26 -0
- catalystwan/{apigw_auth.py → core/apigw_auth.py} +29 -14
- catalystwan/core/client.py +71 -0
- catalystwan/core/encoder.py +12 -0
- catalystwan/{exceptions.py → core/exceptions.py} +29 -9
- catalystwan/core/loader.py +37 -0
- catalystwan/{__init__.py → core/metadata.py} +9 -22
- catalystwan/core/models/deserialize.py +203 -0
- catalystwan/core/models/serialize.py +137 -0
- catalystwan/core/request_adapter.py +246 -0
- catalystwan/{request_limiter.py → core/request_limiter.py} +1 -2
- catalystwan/{response.py → core/response.py} +38 -85
- catalystwan/{session.py → core/session.py} +84 -101
- catalystwan/core/types.py +33 -0
- catalystwan/{version.py → core/version.py} +3 -5
- catalystwan/{vmanage_auth.py → core/vmanage_auth.py} +46 -21
- catalystwan-2.0.0a0.dist-info/METADATA +327 -0
- catalystwan-2.0.0a0.dist-info/RECORD +24 -0
- {catalystwan-0.40.1.dev7.dist-info → catalystwan-2.0.0a0.dist-info}/WHEEL +2 -1
- catalystwan-2.0.0a0.dist-info/top_level.txt +1 -0
- catalystwan/abstractions.py +0 -77
- catalystwan/api/admin_tech_api.py +0 -176
- catalystwan/api/administration.py +0 -434
- catalystwan/api/alarms_api.py +0 -186
- catalystwan/api/api_container.py +0 -73
- catalystwan/api/basic_api.py +0 -338
- catalystwan/api/builders/__init__.py +0 -14
- catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
- catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
- catalystwan/api/builders/feature_profiles/cli.py +0 -76
- catalystwan/api/builders/feature_profiles/other.py +0 -79
- catalystwan/api/builders/feature_profiles/report.py +0 -137
- catalystwan/api/builders/feature_profiles/service.py +0 -213
- catalystwan/api/builders/feature_profiles/system.py +0 -80
- catalystwan/api/builders/feature_profiles/transport.py +0 -214
- catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
- catalystwan/api/config_device_inventory_api.py +0 -58
- catalystwan/api/config_group_api.py +0 -150
- catalystwan/api/configuration_groups/parcel.py +0 -206
- catalystwan/api/dashboard_api.py +0 -215
- catalystwan/api/device_action_api.py +0 -216
- catalystwan/api/feature_profile_api.py +0 -2401
- catalystwan/api/logs_api.py +0 -63
- catalystwan/api/monitoring_status_api.py +0 -76
- catalystwan/api/mtt_aaa_api.py +0 -197
- catalystwan/api/omp_api.py +0 -124
- catalystwan/api/packet_capture_api.py +0 -152
- catalystwan/api/parcel_api.py +0 -42
- catalystwan/api/partition_manager_api.py +0 -143
- catalystwan/api/policy_api.py +0 -1163
- catalystwan/api/resource_pool_api.py +0 -74
- catalystwan/api/software_action_api.py +0 -269
- catalystwan/api/speedtest_api.py +0 -153
- catalystwan/api/task_status_api.py +0 -171
- catalystwan/api/template_api.py +0 -761
- catalystwan/api/templates/README.md +0 -101
- catalystwan/api/templates/bool_str.py +0 -6
- catalystwan/api/templates/cli_template.py +0 -236
- catalystwan/api/templates/device_template/device_template.py +0 -181
- catalystwan/api/templates/device_variable.py +0 -7
- catalystwan/api/templates/feature_template.py +0 -133
- catalystwan/api/templates/feature_template_field.py +0 -175
- catalystwan/api/templates/feature_template_payload.py +0 -17
- catalystwan/api/templates/models/aaa_model.py +0 -387
- catalystwan/api/templates/models/cisco_aaa_model.py +0 -331
- catalystwan/api/templates/models/cisco_banner_model.py +0 -27
- catalystwan/api/templates/models/cisco_bfd_model.py +0 -61
- catalystwan/api/templates/models/cisco_bgp_model.py +0 -510
- catalystwan/api/templates/models/cisco_logging_model.py +0 -122
- catalystwan/api/templates/models/cisco_ntp_model.py +0 -60
- catalystwan/api/templates/models/cisco_omp_model.py +0 -121
- catalystwan/api/templates/models/cisco_ospf.py +0 -241
- catalystwan/api/templates/models/cisco_ospfv3.py +0 -498
- catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -385
- catalystwan/api/templates/models/cisco_snmp_model.py +0 -102
- catalystwan/api/templates/models/cisco_system.py +0 -318
- catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -822
- catalystwan/api/templates/models/cisco_vpn_model.py +0 -603
- catalystwan/api/templates/models/cli_template.py +0 -18
- catalystwan/api/templates/models/omp_vsmart_model.py +0 -73
- catalystwan/api/templates/models/security_vsmart_model.py +0 -28
- catalystwan/api/templates/models/supported.py +0 -42
- catalystwan/api/templates/models/system_vsmart_model.py +0 -182
- catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
- catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
- catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -91
- catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -373
- catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -40
- catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -107
- catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -95
- catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -60
- catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -92
- catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -224
- catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -86
- catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -59
- catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -58
- catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -24
- catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -127
- catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -43
- catalystwan/api/tenant_backup_restore_api.py +0 -154
- catalystwan/api/tenant_management_api.py +0 -127
- catalystwan/api/tenant_migration_api.py +0 -121
- catalystwan/api/versions_utils.py +0 -414
- catalystwan/api/virtual_image_action_api.py +0 -200
- catalystwan/dataclasses.py +0 -493
- catalystwan/endpoints/__init__.py +0 -606
- catalystwan/endpoints/administration_user_and_group.py +0 -341
- catalystwan/endpoints/api_gateway.py +0 -24
- catalystwan/endpoints/certificate_management_device.py +0 -137
- catalystwan/endpoints/certificate_management_vmanage.py +0 -48
- catalystwan/endpoints/client.py +0 -96
- catalystwan/endpoints/cluster_management.py +0 -130
- catalystwan/endpoints/configuration/device/software_update.py +0 -31
- catalystwan/endpoints/configuration/disaster_recovery.py +0 -305
- catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
- catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
- catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
- catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
- catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
- catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +0 -105
- catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -137
- catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
- catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +0 -205
- catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
- catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -214
- catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
- catalystwan/endpoints/configuration/network_hierarchy.py +0 -32
- catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
- catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
- catalystwan/endpoints/configuration/policy/definition/control.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -59
- catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -53
- catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -53
- catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -53
- catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -58
- catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -57
- catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
- catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -57
- catalystwan/endpoints/configuration/policy/list/app.py +0 -48
- catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -52
- catalystwan/endpoints/configuration/policy/list/as_path.py +0 -48
- catalystwan/endpoints/configuration/policy/list/class_map.py +0 -48
- catalystwan/endpoints/configuration/policy/list/color.py +0 -48
- catalystwan/endpoints/configuration/policy/list/community.py +0 -48
- catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -52
- catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -48
- catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -52
- catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
- catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
- catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -48
- catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -48
- catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
- catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -52
- catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -48
- catalystwan/endpoints/configuration/policy/list/local_app.py +0 -48
- catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -48
- catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/list/mirror.py +0 -48
- catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
- catalystwan/endpoints/configuration/policy/list/policer.py +0 -48
- catalystwan/endpoints/configuration/policy/list/port.py +0 -48
- catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -52
- catalystwan/endpoints/configuration/policy/list/prefix.py +0 -49
- catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -52
- catalystwan/endpoints/configuration/policy/list/region.py +0 -47
- catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
- catalystwan/endpoints/configuration/policy/list/site.py +0 -52
- catalystwan/endpoints/configuration/policy/list/sla.py +0 -48
- catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
- catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
- catalystwan/endpoints/configuration/policy/list/tloc.py +0 -48
- catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
- catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
- catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
- catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
- catalystwan/endpoints/configuration/policy/list/url_allow_list.py +0 -48
- catalystwan/endpoints/configuration/policy/list/url_block_list.py +0 -48
- catalystwan/endpoints/configuration/policy/list/vpn.py +0 -50
- catalystwan/endpoints/configuration/policy/list/zone.py +0 -48
- catalystwan/endpoints/configuration/policy/security_template.py +0 -55
- catalystwan/endpoints/configuration/policy/vedge_template.py +0 -52
- catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
- catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -79
- catalystwan/endpoints/configuration/policy_group.py +0 -30
- catalystwan/endpoints/configuration/software_actions.py +0 -201
- catalystwan/endpoints/configuration/topology_group.py +0 -51
- catalystwan/endpoints/configuration_dashboard_status.py +0 -127
- catalystwan/endpoints/configuration_device_actions.py +0 -385
- catalystwan/endpoints/configuration_device_inventory.py +0 -309
- catalystwan/endpoints/configuration_device_template.py +0 -39
- catalystwan/endpoints/configuration_feature_profile.py +0 -135
- catalystwan/endpoints/configuration_general_template.py +0 -31
- catalystwan/endpoints/configuration_group.py +0 -197
- catalystwan/endpoints/configuration_settings.py +0 -749
- catalystwan/endpoints/configuration_template_master.py +0 -48
- catalystwan/endpoints/endpoints_container.py +0 -279
- catalystwan/endpoints/misc.py +0 -21
- catalystwan/endpoints/monitoring/device_details.py +0 -246
- catalystwan/endpoints/monitoring/security_policy.py +0 -12
- catalystwan/endpoints/monitoring/server_info.py +0 -12
- catalystwan/endpoints/monitoring/status.py +0 -76
- catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -35
- catalystwan/endpoints/sdavc_cloud_connector.py +0 -43
- catalystwan/endpoints/tenant_backup_restore.py +0 -40
- catalystwan/endpoints/tenant_management.py +0 -215
- catalystwan/endpoints/tenant_migration.py +0 -102
- catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -128
- catalystwan/endpoints/url_monitoring.py +0 -26
- catalystwan/integration_tests/__init__.py +0 -0
- catalystwan/integration_tests/base.py +0 -81
- catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
- catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
- catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
- catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
- catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
- catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
- catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
- catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
- catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
- catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
- catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
- catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1700
- catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
- catalystwan/integration_tests/profile_builder/__init__.py +0 -0
- catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -78
- catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -56
- catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
- catalystwan/integration_tests/test_data/__init__.py +0 -117
- catalystwan/integration_tests/test_find_template_values.py +0 -38
- catalystwan/integration_tests/test_network_hierarchy.py +0 -82
- catalystwan/integration_tests/test_settings.py +0 -30
- catalystwan/logging.conf +0 -37
- catalystwan/models/common.py +0 -1508
- catalystwan/models/configuration/common.py +0 -11
- catalystwan/models/configuration/feature_profile/README.md +0 -344
- catalystwan/models/configuration/feature_profile/builder.py +0 -22
- catalystwan/models/configuration/feature_profile/common.py +0 -749
- catalystwan/models/configuration/feature_profile/parcel.py +0 -232
- catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
- catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -215
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1054
- catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
- catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
- catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -107
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -915
- catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
- catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
- catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +0 -175
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +0 -56
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +0 -21
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +0 -35
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +0 -25
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +0 -28
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +0 -38
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/policer.py +0 -42
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +0 -83
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +0 -28
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +0 -130
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +0 -30
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +0 -44
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +0 -22
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +0 -24
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +0 -32
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +0 -44
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +0 -24
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +0 -21
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +0 -45
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +0 -32
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +0 -44
- catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -594
- catalystwan/models/configuration/feature_profile/sdwan/routing/ospf.py +0 -170
- catalystwan/models/configuration/feature_profile/sdwan/routing/ospfv3.py +0 -298
- catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -85
- catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +0 -270
- catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -127
- catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -103
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -33
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -275
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -136
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -119
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -172
- catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -627
- catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -242
- catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -84
- catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +0 -419
- catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -184
- catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -112
- catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -92
- catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -216
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
- catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
- catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
- catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +0 -406
- catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
- catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
- catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
- catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
- catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -149
- catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
- catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
- catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
- catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -111
- catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
- catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
- catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
- catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
- catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
- catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
- catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -58
- catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
- catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
- catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
- catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
- catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -166
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -281
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -98
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -329
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -25
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -68
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -55
- catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
- catalystwan/models/configuration/network_hierarchy/__init__.py +0 -22
- catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -120
- catalystwan/models/configuration/network_hierarchy/node.py +0 -88
- catalystwan/models/configuration/policy_group.py +0 -74
- catalystwan/models/configuration/profile_type.py +0 -5
- catalystwan/models/configuration/topology_group.py +0 -52
- catalystwan/models/device_inventory.py +0 -30
- catalystwan/models/feature_profile_parcel.py +0 -15
- catalystwan/models/misc/application_protocols.py +0 -29
- catalystwan/models/monitoring/security_policy.py +0 -16
- catalystwan/models/monitoring/server_info.py +0 -12
- catalystwan/models/policy/__init__.py +0 -392
- catalystwan/models/policy/centralized.py +0 -265
- catalystwan/models/policy/definition/access_control_list.py +0 -193
- catalystwan/models/policy/definition/access_control_list_ipv6.py +0 -187
- catalystwan/models/policy/definition/aip.py +0 -60
- catalystwan/models/policy/definition/amp.py +0 -65
- catalystwan/models/policy/definition/app_route.py +0 -246
- catalystwan/models/policy/definition/cflowd.py +0 -95
- catalystwan/models/policy/definition/control.py +0 -366
- catalystwan/models/policy/definition/device_access.py +0 -117
- catalystwan/models/policy/definition/device_access_ipv6.py +0 -115
- catalystwan/models/policy/definition/dial_peer.py +0 -60
- catalystwan/models/policy/definition/dns_security.py +0 -130
- catalystwan/models/policy/definition/fxo_port.py +0 -63
- catalystwan/models/policy/definition/fxs_did_port.py +0 -58
- catalystwan/models/policy/definition/fxs_port.py +0 -56
- catalystwan/models/policy/definition/hub_and_spoke.py +0 -87
- catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
- catalystwan/models/policy/definition/mesh.py +0 -47
- catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
- catalystwan/models/policy/definition/qos_map.py +0 -111
- catalystwan/models/policy/definition/rewrite.py +0 -47
- catalystwan/models/policy/definition/route_policy.py +0 -187
- catalystwan/models/policy/definition/rule_set.py +0 -270
- catalystwan/models/policy/definition/security_group.py +0 -93
- catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
- catalystwan/models/policy/definition/ssl_decryption.py +0 -209
- catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -87
- catalystwan/models/policy/definition/traffic_data.py +0 -496
- catalystwan/models/policy/definition/url_filtering.py +0 -70
- catalystwan/models/policy/definition/vpn_membership.py +0 -42
- catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
- catalystwan/models/policy/definition/zone_based_firewall.py +0 -301
- catalystwan/models/policy/list/app.py +0 -44
- catalystwan/models/policy/list/app_probe.py +0 -42
- catalystwan/models/policy/list/as_path.py +0 -30
- catalystwan/models/policy/list/class_map.py +0 -30
- catalystwan/models/policy/list/color.py +0 -28
- catalystwan/models/policy/list/communities.py +0 -83
- catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
- catalystwan/models/policy/list/data_prefix.py +0 -30
- catalystwan/models/policy/list/fax_protocol.py +0 -45
- catalystwan/models/policy/list/fqdn.py +0 -24
- catalystwan/models/policy/list/geo_location.py +0 -33
- catalystwan/models/policy/list/identity.py +0 -29
- catalystwan/models/policy/list/ips_signature.py +0 -27
- catalystwan/models/policy/list/ipv6_prefix.py +0 -33
- catalystwan/models/policy/list/local_app.py +0 -45
- catalystwan/models/policy/list/local_domain.py +0 -36
- catalystwan/models/policy/list/media_profile.py +0 -44
- catalystwan/models/policy/list/mirror.py +0 -27
- catalystwan/models/policy/list/modem_pass_through.py +0 -27
- catalystwan/models/policy/list/policer.py +0 -39
- catalystwan/models/policy/list/port.py +0 -33
- catalystwan/models/policy/list/preferred_color_group.py +0 -82
- catalystwan/models/policy/list/prefix.py +0 -33
- catalystwan/models/policy/list/protocol_name.py +0 -26
- catalystwan/models/policy/list/region.py +0 -45
- catalystwan/models/policy/list/scalable_group_tag.py +0 -30
- catalystwan/models/policy/list/site.py +0 -34
- catalystwan/models/policy/list/sla.py +0 -77
- catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
- catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
- catalystwan/models/policy/list/tloc.py +0 -32
- catalystwan/models/policy/list/translation_profile.py +0 -32
- catalystwan/models/policy/list/translation_rules.py +0 -29
- catalystwan/models/policy/list/trunkgroup.py +0 -56
- catalystwan/models/policy/list/umbrella_data.py +0 -30
- catalystwan/models/policy/list/url.py +0 -39
- catalystwan/models/policy/list/vpn.py +0 -40
- catalystwan/models/policy/list/zone.py +0 -45
- catalystwan/models/policy/localized.py +0 -154
- catalystwan/models/policy/policy.py +0 -100
- catalystwan/models/policy/policy_definition.py +0 -1624
- catalystwan/models/policy/policy_list.py +0 -47
- catalystwan/models/policy/security.py +0 -279
- catalystwan/models/policy/voice.py +0 -71
- catalystwan/models/settings.py +0 -41
- catalystwan/models/templates.py +0 -79
- catalystwan/models/tenant.py +0 -105
- catalystwan/models/url_monitoring.py +0 -28
- catalystwan/tests/__init__.py +0 -0
- catalystwan/tests/builders/uc_voice.py +0 -85
- catalystwan/tests/models/__init__.py +0 -0
- catalystwan/tests/templates/__init__.py +0 -0
- catalystwan/tests/templates/definitions/__init__.py +0 -0
- catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
- catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
- catalystwan/tests/templates/definitions/basic/__init__.py +0 -0
- catalystwan/tests/templates/definitions/basic/alias.json +0 -7
- catalystwan/tests/templates/definitions/basic/basic.json +0 -7
- catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -7
- catalystwan/tests/templates/definitions/basic/children.json +0 -39
- catalystwan/tests/templates/definitions/basic/children_nested.json +0 -72
- catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -72
- catalystwan/tests/templates/definitions/basic/data_path.json +0 -13
- catalystwan/tests/templates/definitions/cisco_aaa.json +0 -178
- catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
- catalystwan/tests/templates/definitions/cisco_banner.json +0 -20
- catalystwan/tests/templates/definitions/cisco_bfd.json +0 -90
- catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
- catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
- catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
- catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
- catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
- catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
- catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
- catalystwan/tests/templates/definitions/cisco_vpn_basic.json +0 -17
- catalystwan/tests/templates/definitions/cisco_vpn_complex.json +0 -1081
- catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
- catalystwan/tests/templates/definitions/default_cisco_system.json +0 -184
- catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
- catalystwan/tests/templates/definitions/omp_vsmart_2.json +0 -48
- catalystwan/tests/templates/definitions/omp_vsmart_3.json +0 -71
- catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
- catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
- catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
- catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
- catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
- catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
- catalystwan/tests/templates/models/__init__.py +0 -53
- catalystwan/tests/templates/models/aaa.py +0 -106
- catalystwan/tests/templates/models/cisco_aaa.py +0 -124
- catalystwan/tests/templates/models/cisco_banner.py +0 -7
- catalystwan/tests/templates/models/cisco_bfd.py +0 -15
- catalystwan/tests/templates/models/cisco_logging.py +0 -65
- catalystwan/tests/templates/models/cisco_ntp.py +0 -17
- catalystwan/tests/templates/models/cisco_omp.py +0 -37
- catalystwan/tests/templates/models/cisco_ospf.py +0 -60
- catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
- catalystwan/tests/templates/models/cisco_snmp.py +0 -40
- catalystwan/tests/templates/models/cisco_system.py +0 -113
- catalystwan/tests/templates/models/cisco_vpn.py +0 -240
- catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
- catalystwan/tests/templates/models/omp_vsmart.py +0 -53
- catalystwan/tests/templates/models/security_vsmart.py +0 -11
- catalystwan/tests/templates/models/system_vsmart.py +0 -37
- catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
- catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
- catalystwan/tests/templates/schemas/aaa.json +0 -1096
- catalystwan/tests/templates/schemas/basic/alias.json +0 -24
- catalystwan/tests/templates/schemas/basic/basic.json +0 -23
- catalystwan/tests/templates/schemas/basic/children.json +0 -59
- catalystwan/tests/templates/schemas/basic/children_nested.json +0 -112
- catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -112
- catalystwan/tests/templates/schemas/basic/data_path.json +0 -29
- catalystwan/tests/templates/schemas/cedge_aaa.json +0 -1185
- catalystwan/tests/templates/schemas/cisco_banner.json +0 -44
- catalystwan/tests/templates/schemas/cisco_bfd.json +0 -266
- catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
- catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
- catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
- catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
- catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
- catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
- catalystwan/tests/templates/schemas/cisco_system.json +0 -3099
- catalystwan/tests/templates/schemas/cisco_vpn.json +0 -2504
- catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
- catalystwan/tests/templates/schemas/omp-vsmart.json +0 -222
- catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
- catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
- catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
- catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
- catalystwan/tests/templates/test_chose_model.py +0 -32
- catalystwan/tests/templates/test_deserialize_model.py +0 -69
- catalystwan/tests/templates/test_find_template_values.py +0 -193
- catalystwan/tests/templates/test_find_template_values_2.py +0 -193
- catalystwan/tests/templates/test_generate_payload.py +0 -137
- catalystwan/tests/templates/test_serialize_model.py +0 -52
- catalystwan/tests/test_admin_tech_api.py +0 -198
- catalystwan/tests/test_administration.py +0 -470
- catalystwan/tests/test_alarms_api.py +0 -251
- catalystwan/tests/test_cli_template.py +0 -218
- catalystwan/tests/test_creation_tools.py +0 -155
- catalystwan/tests/test_device_action_api.py +0 -117
- catalystwan/tests/test_devices_api.py +0 -674
- catalystwan/tests/test_endpoints.py +0 -907
- catalystwan/tests/test_feature_profile_api.py +0 -282
- catalystwan/tests/test_feature_template_field.py +0 -33
- catalystwan/tests/test_logs_api.py +0 -40
- catalystwan/tests/test_models_common.py +0 -53
- catalystwan/tests/test_monitoring_security_policy.py +0 -65
- catalystwan/tests/test_monitoring_server_info.py +0 -49
- catalystwan/tests/test_monitoring_status_api.py +0 -118
- catalystwan/tests/test_mtt_aaa_api.py +0 -293
- catalystwan/tests/test_omp_api.py +0 -438
- catalystwan/tests/test_packet_capture.py +0 -125
- catalystwan/tests/test_partition_manager_api.py +0 -121
- catalystwan/tests/test_response.py +0 -183
- catalystwan/tests/test_session.py +0 -102
- catalystwan/tests/test_software_action_api.py +0 -154
- catalystwan/tests/test_speed_test_api.py +0 -143
- catalystwan/tests/test_task_status_api.py +0 -381
- catalystwan/tests/test_templates.py +0 -405
- catalystwan/tests/test_tenant_backup_restore_api.py +0 -88
- catalystwan/tests/test_tenant_management_api.py +0 -153
- catalystwan/tests/test_tenant_migration_api.py +0 -102
- catalystwan/tests/test_typed_list.py +0 -426
- catalystwan/tests/test_url_monitoring.py +0 -80
- catalystwan/tests/test_version.py +0 -99
- catalystwan/tests/test_version_utils.py +0 -240
- catalystwan/tests/test_vmanage_auth.py +0 -149
- catalystwan/typed_list.py +0 -288
- catalystwan/utils/__init__.py +0 -0
- catalystwan/utils/alarm_status.py +0 -16
- catalystwan/utils/certificate_status.py +0 -13
- catalystwan/utils/colors.py +0 -12
- catalystwan/utils/config_status.py +0 -8
- catalystwan/utils/creation_tools.py +0 -136
- catalystwan/utils/dashboard.py +0 -255
- catalystwan/utils/device_model.py +0 -322
- catalystwan/utils/dict.py +0 -61
- catalystwan/utils/feature_template/choose_model.py +0 -30
- catalystwan/utils/feature_template/find_template_values.py +0 -111
- catalystwan/utils/model.py +0 -45
- catalystwan/utils/operation_status.py +0 -22
- catalystwan/utils/persona.py +0 -5
- catalystwan/utils/personality.py +0 -10
- catalystwan/utils/pydantic_field.py +0 -12
- catalystwan/utils/reachability.py +0 -14
- catalystwan/utils/session_type.py +0 -17
- catalystwan/utils/template_type.py +0 -8
- catalystwan/utils/type_check.py +0 -22
- catalystwan/utils/upgrades_helper.py +0 -95
- catalystwan/utils/validate_status.py +0 -8
- catalystwan/workflows/backup_restore_device_templates.py +0 -467
- catalystwan/workflows/tenant_migration.py +0 -203
- catalystwan-0.40.1.dev7.dist-info/METADATA +0 -539
- catalystwan-0.40.1.dev7.dist-info/RECORD +0 -618
- /catalystwan/{api → core/models}/__init__.py +0 -0
- /catalystwan/{api/builders/feature_profiles/__init__.py → core/py.typed} +0 -0
- {catalystwan-0.40.1.dev7.dist-info → catalystwan-2.0.0a0.dist-info}/LICENSE +0 -0
|
@@ -1,434 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from http import HTTPStatus
|
|
7
|
-
from typing import TYPE_CHECKING, List, Union, cast, overload
|
|
8
|
-
|
|
9
|
-
from requests import Response
|
|
10
|
-
from typing_extensions import deprecated
|
|
11
|
-
|
|
12
|
-
from catalystwan.dataclasses import (
|
|
13
|
-
Certificate,
|
|
14
|
-
CloudConnectorData,
|
|
15
|
-
CloudServicesSettings,
|
|
16
|
-
Organization,
|
|
17
|
-
Password,
|
|
18
|
-
ServiceConfigurationData,
|
|
19
|
-
SoftwareInstallTimeout,
|
|
20
|
-
Vbond,
|
|
21
|
-
)
|
|
22
|
-
from catalystwan.endpoints.administration_user_and_group import (
|
|
23
|
-
ActiveSession,
|
|
24
|
-
AdministrationUserAndGroup,
|
|
25
|
-
InvalidateSessionMessage,
|
|
26
|
-
ResourceGroup,
|
|
27
|
-
ResourceGroupSwitchRequest,
|
|
28
|
-
ResourceGroupUpdateRequest,
|
|
29
|
-
SessionsDeleteRequest,
|
|
30
|
-
User,
|
|
31
|
-
UserGroup,
|
|
32
|
-
UserResetRequest,
|
|
33
|
-
UserRole,
|
|
34
|
-
UserUpdateRequest,
|
|
35
|
-
)
|
|
36
|
-
from catalystwan.exceptions import CatalystwanDeprecationWarning, CatalystwanException
|
|
37
|
-
from catalystwan.models.settings import ThreatGridApi
|
|
38
|
-
from catalystwan.typed_list import DataSequence
|
|
39
|
-
from catalystwan.utils.creation_tools import asdict, create_dataclass
|
|
40
|
-
|
|
41
|
-
if TYPE_CHECKING:
|
|
42
|
-
from catalystwan.session import ManagerSession
|
|
43
|
-
|
|
44
|
-
logger = logging.getLogger(__name__)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class UsersAPI:
|
|
48
|
-
"""Class implementing methods for user managment.
|
|
49
|
-
|
|
50
|
-
Attributes:
|
|
51
|
-
session: logged in API client session
|
|
52
|
-
|
|
53
|
-
Usage example:
|
|
54
|
-
# Create session
|
|
55
|
-
session = create_manager_session(...)
|
|
56
|
-
# Get information about all users
|
|
57
|
-
all_users = session.api.users.get()
|
|
58
|
-
"""
|
|
59
|
-
|
|
60
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
61
|
-
self.session = session
|
|
62
|
-
self._endpoints = AdministrationUserAndGroup(session)
|
|
63
|
-
|
|
64
|
-
def get(self) -> DataSequence[User]:
|
|
65
|
-
"""List all users
|
|
66
|
-
|
|
67
|
-
Returns:
|
|
68
|
-
DataSequence[User]: List-like object representing users
|
|
69
|
-
"""
|
|
70
|
-
return self._endpoints.find_users()
|
|
71
|
-
|
|
72
|
-
def get_role(self) -> UserRole:
|
|
73
|
-
"""Get currently logged user role
|
|
74
|
-
|
|
75
|
-
Returns:
|
|
76
|
-
UserRole: Currently logged user role information
|
|
77
|
-
"""
|
|
78
|
-
return self._endpoints.find_user_role()
|
|
79
|
-
|
|
80
|
-
def get_auth_type(self) -> str:
|
|
81
|
-
"""Get currently logged user authentication type
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
str: Currently logged user authentication type
|
|
85
|
-
"""
|
|
86
|
-
return self._endpoints.find_user_auth_type().user_auth_type
|
|
87
|
-
|
|
88
|
-
def create(self, user: User):
|
|
89
|
-
"""Creates a new user
|
|
90
|
-
|
|
91
|
-
Args:
|
|
92
|
-
user (User): Definition of new user to be created
|
|
93
|
-
"""
|
|
94
|
-
self._endpoints.create_user(user)
|
|
95
|
-
|
|
96
|
-
def update(self, user_update_request: UserUpdateRequest):
|
|
97
|
-
"""Updates existing user
|
|
98
|
-
|
|
99
|
-
Args:
|
|
100
|
-
user_update_request (UserUpdateRequest): User attributes to be updated
|
|
101
|
-
"""
|
|
102
|
-
self._endpoints.update_user(user_update_request.username, user_update_request)
|
|
103
|
-
|
|
104
|
-
def update_password(self, username: str, new_password: str, current_user_password: str):
|
|
105
|
-
"""Updates exisiting user password
|
|
106
|
-
|
|
107
|
-
Args:
|
|
108
|
-
username (str): Name of the user
|
|
109
|
-
new_password (str): New password for given user
|
|
110
|
-
"""
|
|
111
|
-
update_password_request = UserUpdateRequest(
|
|
112
|
-
username=username, password=new_password, current_user_password=current_user_password
|
|
113
|
-
)
|
|
114
|
-
self._endpoints.update_password(username, update_password_request)
|
|
115
|
-
|
|
116
|
-
def reset(self, username: str):
|
|
117
|
-
"""Resets given user (unlocks blocked user eg. after number of unsuccessfull login attempts)
|
|
118
|
-
|
|
119
|
-
Args:
|
|
120
|
-
username (str): Name of the user to be unlocked
|
|
121
|
-
"""
|
|
122
|
-
self._endpoints.reset_user(UserResetRequest(username=username))
|
|
123
|
-
|
|
124
|
-
def delete(self, username: str):
|
|
125
|
-
"""Deletes given user
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
username (str): Name of the user to be deleted
|
|
129
|
-
"""
|
|
130
|
-
self._endpoints.delete_user(username)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
class UserGroupsAPI:
|
|
134
|
-
"""Class implementing methods for user group management."""
|
|
135
|
-
|
|
136
|
-
def __init__(self, session: ManagerSession):
|
|
137
|
-
self.session = session
|
|
138
|
-
self._endpoints = AdministrationUserAndGroup(session)
|
|
139
|
-
|
|
140
|
-
def get(self) -> DataSequence[UserGroup]:
|
|
141
|
-
"""List all user groups
|
|
142
|
-
|
|
143
|
-
Returns:
|
|
144
|
-
DataSequence[UserGroup]: List-like object representing user groups
|
|
145
|
-
"""
|
|
146
|
-
return self._endpoints.find_user_groups()
|
|
147
|
-
|
|
148
|
-
def create(self, user_group: UserGroup):
|
|
149
|
-
"""Creates a new user group
|
|
150
|
-
|
|
151
|
-
Args:
|
|
152
|
-
user_group (UserGroup): Definition of user group to be created
|
|
153
|
-
"""
|
|
154
|
-
self._endpoints.create_user_group(user_group)
|
|
155
|
-
|
|
156
|
-
def update(self, user_group: UserGroup):
|
|
157
|
-
"""Updates existing user group
|
|
158
|
-
|
|
159
|
-
Args:
|
|
160
|
-
user_group (UserGroup): User group attributes to be updated
|
|
161
|
-
"""
|
|
162
|
-
self._endpoints.update_user_group(user_group.group_name, user_group)
|
|
163
|
-
|
|
164
|
-
def delete(self, group_name: str):
|
|
165
|
-
"""Deletes given user group
|
|
166
|
-
|
|
167
|
-
Args:
|
|
168
|
-
group_name (str): Name of the user group to be deleted
|
|
169
|
-
"""
|
|
170
|
-
self._endpoints.delete_user_group(group_name)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
class ResourceGroupsAPI:
|
|
174
|
-
"""Class implementing methods for resource groups management."""
|
|
175
|
-
|
|
176
|
-
def __init__(self, session: ManagerSession):
|
|
177
|
-
self.session = session
|
|
178
|
-
self._endpoints = AdministrationUserAndGroup(session)
|
|
179
|
-
|
|
180
|
-
def get(self) -> DataSequence[ResourceGroup]:
|
|
181
|
-
"""List all resource groups
|
|
182
|
-
|
|
183
|
-
Returns:
|
|
184
|
-
DataSequence[ResourceGroup]: List-like object containing user groups information
|
|
185
|
-
"""
|
|
186
|
-
return self._endpoints.find_resource_groups()
|
|
187
|
-
|
|
188
|
-
def create(self, resource_group: ResourceGroup):
|
|
189
|
-
"""Creates a new resource group
|
|
190
|
-
|
|
191
|
-
Args:
|
|
192
|
-
resource_group (ResourceGroup): Definition of new resource group to be created
|
|
193
|
-
"""
|
|
194
|
-
self._endpoints.create_resource_group(resource_group)
|
|
195
|
-
|
|
196
|
-
def update(self, resource_group_update_request: ResourceGroupUpdateRequest):
|
|
197
|
-
"""Updates existing resource group
|
|
198
|
-
|
|
199
|
-
Args:
|
|
200
|
-
resource_group_update_request (ResourceGroupUpdateRequest): Object containing existing
|
|
201
|
-
resource group id and attributes to be updated
|
|
202
|
-
"""
|
|
203
|
-
self._endpoints.update_resource_group(resource_group_update_request.id, resource_group_update_request)
|
|
204
|
-
|
|
205
|
-
def switch(self, resource_group_name: str):
|
|
206
|
-
"""Switch to view only a specific resource group (for global admin only)
|
|
207
|
-
|
|
208
|
-
Args:
|
|
209
|
-
resource_group_name (str): Name of resource group to switch view
|
|
210
|
-
"""
|
|
211
|
-
switch_request = ResourceGroupSwitchRequest(resource_group_name=resource_group_name)
|
|
212
|
-
self._endpoints.switch_resource_group(switch_request)
|
|
213
|
-
|
|
214
|
-
def delete(self, resource_group_id: str):
|
|
215
|
-
"""Deletes a given resource group
|
|
216
|
-
|
|
217
|
-
Args:
|
|
218
|
-
resource_group_id (str): Resource group id
|
|
219
|
-
"""
|
|
220
|
-
self._endpoints.delete_resource_group(resource_group_id)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
class SessionsAPI:
|
|
224
|
-
"""Class implementing methods for vmanage sessions management."""
|
|
225
|
-
|
|
226
|
-
def __init__(self, session: ManagerSession):
|
|
227
|
-
self.session = session
|
|
228
|
-
self._endpoints = AdministrationUserAndGroup(session)
|
|
229
|
-
|
|
230
|
-
def get(self) -> DataSequence[ActiveSession]:
|
|
231
|
-
"""List all active sessions
|
|
232
|
-
|
|
233
|
-
Returns:
|
|
234
|
-
DataSequence[ActiveSession]: List-like object representing active user sessions
|
|
235
|
-
"""
|
|
236
|
-
return self._endpoints.get_active_sessions()
|
|
237
|
-
|
|
238
|
-
def invalidate(self, sessions: List[ActiveSession]) -> InvalidateSessionMessage:
|
|
239
|
-
"""Invalidates given sessions
|
|
240
|
-
|
|
241
|
-
Args:
|
|
242
|
-
sessions (List[ActiveSession]): List of active sessions
|
|
243
|
-
|
|
244
|
-
Returns:
|
|
245
|
-
InvalidateSessionMessage: Information about invalidation result
|
|
246
|
-
"""
|
|
247
|
-
sessions_delete_request = SessionsDeleteRequest.from_active_session_list(sessions)
|
|
248
|
-
return self._endpoints.remove_sessions(sessions_delete_request)
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
class ClusterManagementAPI:
|
|
252
|
-
"""Covers clusterManagement API calls.
|
|
253
|
-
|
|
254
|
-
Attributes:
|
|
255
|
-
session: logged in API admin session
|
|
256
|
-
|
|
257
|
-
Example usage:
|
|
258
|
-
# Create session
|
|
259
|
-
session = create_manager_session(...)
|
|
260
|
-
# Get health status
|
|
261
|
-
health_status = session.api.cluster_management.get_cluster_management_health_status()
|
|
262
|
-
"""
|
|
263
|
-
|
|
264
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
265
|
-
self.session = session
|
|
266
|
-
|
|
267
|
-
def modify_cluster_setup(self, service_configuration: ServiceConfigurationData) -> bool:
|
|
268
|
-
"""Updates vManage cluster configuration.
|
|
269
|
-
|
|
270
|
-
Args:
|
|
271
|
-
service_configuration: vManage cluster config
|
|
272
|
-
"""
|
|
273
|
-
url_path = "/dataservice/clusterManagement/setup"
|
|
274
|
-
data = asdict(service_configuration) # type: ignore
|
|
275
|
-
response = self.session.put(url_path, json=data)
|
|
276
|
-
return True if response.status_code == 200 else False
|
|
277
|
-
|
|
278
|
-
def get_cluster_management_health_status(self) -> Union[dict, list]:
|
|
279
|
-
"""Gets Cluster Management Service Reachability health status.
|
|
280
|
-
|
|
281
|
-
Returns:
|
|
282
|
-
TODO return health status dataclass
|
|
283
|
-
"""
|
|
284
|
-
url_path = "/dataservice/clusterManagement/health/status"
|
|
285
|
-
return self.session.get_data(url_path)
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
class AdministrationSettingsAPI:
|
|
289
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
290
|
-
"""Covers Administration Settings API calls.
|
|
291
|
-
|
|
292
|
-
Args:
|
|
293
|
-
session: logged in API admin session
|
|
294
|
-
|
|
295
|
-
Example usage:
|
|
296
|
-
- to update e.g. password:
|
|
297
|
-
password = Password(old_password="qwer1234", new_password="asdf9876")
|
|
298
|
-
AdministrationSettingsAPI(session).update(password)
|
|
299
|
-
"""
|
|
300
|
-
self.session = session
|
|
301
|
-
|
|
302
|
-
def get_sdavc_cloud_connector_config(self) -> CloudConnectorData:
|
|
303
|
-
"""Gets SD-AVC Cloud Connector Config.
|
|
304
|
-
|
|
305
|
-
Returns:
|
|
306
|
-
CloudConnector dataclass config
|
|
307
|
-
"""
|
|
308
|
-
url_path = "/dataservice/sdavc/cloudconnector"
|
|
309
|
-
response = cast(dict, self.session.get_json(url_path))
|
|
310
|
-
return create_dataclass(CloudConnectorData, response)
|
|
311
|
-
|
|
312
|
-
def enable_sdavc_cloud_connector(self, cloud_connector: CloudConnectorData) -> bool:
|
|
313
|
-
"""Enables SD-AVC Cloud Connector on vManage."""
|
|
314
|
-
url_path = "/dataservice/sdavc/cloudconnector"
|
|
315
|
-
data = asdict(cloud_connector) # type: ignore
|
|
316
|
-
response = self.session.post(url_path, json=data)
|
|
317
|
-
return True if response.status_code == 200 else False
|
|
318
|
-
|
|
319
|
-
def disable_sdavc_cloud_connector(self) -> bool:
|
|
320
|
-
"""Disables SD-AVC Cloud Connector on vManage."""
|
|
321
|
-
url_path = "/dataservice/sdavc/cloudconnector"
|
|
322
|
-
data = {"cloudEnabled": False}
|
|
323
|
-
response = self.session.put(url_path, data)
|
|
324
|
-
return True if response.status_code == 200 else False
|
|
325
|
-
|
|
326
|
-
def get_cloud_services(self) -> CloudServicesSettings:
|
|
327
|
-
url_path = "/dataservice/settings/configuration/cloudservices"
|
|
328
|
-
data = self.session.get_data(url_path)[0]
|
|
329
|
-
return create_dataclass(CloudServicesSettings, data)
|
|
330
|
-
|
|
331
|
-
def set_cloud_services(self, config: CloudServicesSettings) -> bool:
|
|
332
|
-
url_path = "/dataservice/settings/configuration/cloudservices"
|
|
333
|
-
response = self.session.post(url_path, asdict(config)) # type: ignore
|
|
334
|
-
return True if response.status_code == 200 else False
|
|
335
|
-
|
|
336
|
-
def get_cloud_on_ramp_for_saas_mode(self):
|
|
337
|
-
"""Get information about Cloud on Ramp for Saas mode"""
|
|
338
|
-
url_path = "/dataservice/settings/configuration/cloudx"
|
|
339
|
-
return self.session.get_data(url_path)
|
|
340
|
-
|
|
341
|
-
def enable_cloud_on_ramp_for_saas_mode(self, disable=False):
|
|
342
|
-
"""Enable or disable COR for SaaS"""
|
|
343
|
-
url_path = "/dataservice/settings/configuration/cloudx"
|
|
344
|
-
data = {"mode": "on"} if not disable else {"mode": "off"}
|
|
345
|
-
response = self.session.put(url_path, data)
|
|
346
|
-
return True if response.status_code == 200 else False
|
|
347
|
-
|
|
348
|
-
@deprecated(
|
|
349
|
-
"Use .endpoints.configuration_settings.get_organizations() instead", category=CatalystwanDeprecationWarning
|
|
350
|
-
)
|
|
351
|
-
def get_organization(self) -> Organization:
|
|
352
|
-
endpoint = "/dataservice/settings/configuration/organization"
|
|
353
|
-
|
|
354
|
-
return create_dataclass(Organization, self.session.get_data(endpoint)[0])
|
|
355
|
-
|
|
356
|
-
def get_software_install_timeout(self) -> SoftwareInstallTimeout:
|
|
357
|
-
url_path = "/settings/configuration/softwareMaintenance"
|
|
358
|
-
|
|
359
|
-
return create_dataclass(SoftwareInstallTimeout, self.session.get_data(url_path)[0])
|
|
360
|
-
|
|
361
|
-
def set_software_install_timeout(self, download_timeout_min: int, activate_timeout_min: int):
|
|
362
|
-
MINIMAL_DOWNLOAD_TIMEOUT_MIN = 60
|
|
363
|
-
MINIMAL_ACTIVATE_TIMEOUT_MIN = 30
|
|
364
|
-
assert download_timeout_min >= MINIMAL_DOWNLOAD_TIMEOUT_MIN
|
|
365
|
-
assert activate_timeout_min >= MINIMAL_ACTIVATE_TIMEOUT_MIN
|
|
366
|
-
|
|
367
|
-
url_path = "/settings/configuration/softwareMaintenance"
|
|
368
|
-
data = asdict(SoftwareInstallTimeout(download_timeout_min, activate_timeout_min)) # type: ignore
|
|
369
|
-
response = self.session.post(url_path, json=data)
|
|
370
|
-
return True if response.status_code == 200 else False
|
|
371
|
-
|
|
372
|
-
@overload
|
|
373
|
-
def update(self, payload: Password) -> bool:
|
|
374
|
-
...
|
|
375
|
-
|
|
376
|
-
@overload
|
|
377
|
-
def update(self, payload: Certificate) -> bool:
|
|
378
|
-
...
|
|
379
|
-
|
|
380
|
-
@overload
|
|
381
|
-
def update(self, payload: Vbond) -> bool:
|
|
382
|
-
...
|
|
383
|
-
|
|
384
|
-
@overload
|
|
385
|
-
def update(self, payload: Organization) -> bool:
|
|
386
|
-
...
|
|
387
|
-
|
|
388
|
-
@overload
|
|
389
|
-
def update(self, payload: ThreatGridApi) -> bool:
|
|
390
|
-
...
|
|
391
|
-
|
|
392
|
-
def update(self, payload: Union[Organization, Certificate, Password, Vbond, ThreatGridApi]) -> bool:
|
|
393
|
-
if isinstance(payload, ThreatGridApi):
|
|
394
|
-
created_threat = self.__update_thread_grid_api(payload)
|
|
395
|
-
return created_threat is not None
|
|
396
|
-
json_payload = asdict(payload) # type: ignore
|
|
397
|
-
if isinstance(payload, Organization):
|
|
398
|
-
response = self.__update_organization(json_payload)
|
|
399
|
-
elif isinstance(payload, Certificate):
|
|
400
|
-
response = self.__update_certificate(payload)
|
|
401
|
-
elif isinstance(payload, Password):
|
|
402
|
-
response = self.__update_password(json_payload)
|
|
403
|
-
elif isinstance(payload, Vbond):
|
|
404
|
-
response = self.__update_vbond(json_payload)
|
|
405
|
-
else:
|
|
406
|
-
raise CatalystwanException(f"Not supported payload type: {type(payload).__name__}")
|
|
407
|
-
|
|
408
|
-
return True if response.status_code == HTTPStatus.OK else False
|
|
409
|
-
|
|
410
|
-
def __update_password(self, payload: dict) -> Response:
|
|
411
|
-
endpoint = "/dataservice/admin/user/profile/password"
|
|
412
|
-
response = self.session.put(endpoint, json=payload)
|
|
413
|
-
logger.info("Password changed.")
|
|
414
|
-
return response
|
|
415
|
-
|
|
416
|
-
def __update_certificate(self, payload: Certificate) -> Response:
|
|
417
|
-
json_payload = asdict(payload) # type: ignore
|
|
418
|
-
endpoint = "/dataservice/settings/configuration/certificate"
|
|
419
|
-
return self.session.put(endpoint, json=json_payload)
|
|
420
|
-
|
|
421
|
-
def __update_vbond(self, payload: dict) -> Response:
|
|
422
|
-
endpoint = "/dataservice/settings/configuration/device"
|
|
423
|
-
return self.session.post(endpoint, json=payload)
|
|
424
|
-
|
|
425
|
-
def __update_thread_grid_api(self, payload: ThreatGridApi) -> DataSequence[ThreatGridApi]:
|
|
426
|
-
return self.session.endpoints.configuration_settings.edit_threat_grid_api_key(payload)
|
|
427
|
-
|
|
428
|
-
@deprecated(
|
|
429
|
-
"Use .endpoints.configuration_settings.edit_organizations() instead", category=CatalystwanDeprecationWarning
|
|
430
|
-
)
|
|
431
|
-
def __update_organization(self, payload: dict) -> Response:
|
|
432
|
-
endpoint = "/dataservice/settings/configuration/organization"
|
|
433
|
-
del payload["controlConnectionUp"]
|
|
434
|
-
return self.session.put(endpoint, json=payload)
|
catalystwan/api/alarms_api.py
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Set
|
|
7
|
-
|
|
8
|
-
from tenacity import retry, retry_if_result, stop_after_attempt, wait_fixed # type: ignore
|
|
9
|
-
|
|
10
|
-
from catalystwan.dataclasses import AlarmData
|
|
11
|
-
from catalystwan.typed_list import DataSequence
|
|
12
|
-
from catalystwan.utils.creation_tools import create_dataclass, flatten_dict
|
|
13
|
-
|
|
14
|
-
if TYPE_CHECKING:
|
|
15
|
-
from catalystwan.session import ManagerSession
|
|
16
|
-
|
|
17
|
-
logger = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class AlarmsAPI:
|
|
21
|
-
"""API methods of vManage for Alarms.
|
|
22
|
-
|
|
23
|
-
Attributes:
|
|
24
|
-
session: logged in API client session
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
URL = "/dataservice/alarms"
|
|
28
|
-
|
|
29
|
-
def __init__(self, session: ManagerSession):
|
|
30
|
-
self.session = session
|
|
31
|
-
|
|
32
|
-
def get(self, from_time: Optional[int] = None) -> DataSequence[AlarmData]:
|
|
33
|
-
"""Data sequence of alarms.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
from_time: Gets alarms from time in hour. Defaults to None - gets all alrams.
|
|
37
|
-
|
|
38
|
-
Returns:
|
|
39
|
-
DataSequence[AlarmData] of getted alarms.
|
|
40
|
-
|
|
41
|
-
Examples:
|
|
42
|
-
Get all alarms:
|
|
43
|
-
>>> alarms = AlarmsAPI(session).get()
|
|
44
|
-
|
|
45
|
-
Get all alarms from 3 hours:
|
|
46
|
-
>>> alarms = AlarmsAPI(session).get(from_time=3)
|
|
47
|
-
|
|
48
|
-
Get all not viewed alarms:
|
|
49
|
-
>>> alarms = AlarmsAPI(session).get()
|
|
50
|
-
>>> not_viewed_alarms = alarms.filter(viewed=False)
|
|
51
|
-
|
|
52
|
-
Get all critical alarms:
|
|
53
|
-
>>> alarms = AlarmsAPI(session).get()
|
|
54
|
-
>>> critical_alarms = alarms.filter(severity=Severity.CRITICAL)
|
|
55
|
-
"""
|
|
56
|
-
query: Dict[str, Any] = {
|
|
57
|
-
"query": {
|
|
58
|
-
"condition": "AND",
|
|
59
|
-
"rules": [{"field": "active", "type": "boolean", "value": ["true"], "operator": "equal"}],
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if from_time:
|
|
63
|
-
query["query"]["rules"].append(
|
|
64
|
-
{
|
|
65
|
-
"value": [str(from_time)],
|
|
66
|
-
"field": "entry_time",
|
|
67
|
-
"type": "date",
|
|
68
|
-
"operator": "last_n_hours",
|
|
69
|
-
}
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
response = self.session.post(url=AlarmsAPI.URL, json=query).json()["data"]
|
|
73
|
-
alarms = [create_dataclass(AlarmData, flatten_dict(alarm)) for alarm in response]
|
|
74
|
-
logger.info("Current alarms collected successfully.")
|
|
75
|
-
|
|
76
|
-
return DataSequence(AlarmData, alarms)
|
|
77
|
-
|
|
78
|
-
def mark_all_as_viewed(self) -> None:
|
|
79
|
-
"""Marks all alarms as viewed."""
|
|
80
|
-
|
|
81
|
-
self.session.post(f"{AlarmsAPI.URL}/markallasviewed")
|
|
82
|
-
logger.info("Alarms mark as viewed.")
|
|
83
|
-
|
|
84
|
-
def check_alarms(
|
|
85
|
-
self,
|
|
86
|
-
expected: List[Dict[str, str]],
|
|
87
|
-
timeout_seconds: int = 240,
|
|
88
|
-
sleep_seconds: int = 5,
|
|
89
|
-
) -> Dict[str, set]:
|
|
90
|
-
"""Checks if alarms have occurred.
|
|
91
|
-
|
|
92
|
-
For a specified period of time, the method queries the API about unread alarms and
|
|
93
|
-
checks if they occur in the expected ones. If all alarms occur before the time expires,
|
|
94
|
-
it will not poll any further.
|
|
95
|
-
|
|
96
|
-
Args:
|
|
97
|
-
expected(list): The list of expected alarms.
|
|
98
|
-
timeout_seconds (int): Failure timeout.
|
|
99
|
-
sleep_seconds (int): Sleep time.
|
|
100
|
-
|
|
101
|
-
Returns:
|
|
102
|
-
The dictionary with alarms that occurred (key 'found') and did not (key 'no-found')
|
|
103
|
-
|
|
104
|
-
Examples:
|
|
105
|
-
>>> expected_alarms = [{
|
|
106
|
-
"type": "memory-usage",
|
|
107
|
-
"rulename": "memory-usage",
|
|
108
|
-
"component": "System",
|
|
109
|
-
"severity": "Medium",
|
|
110
|
-
"system_ip": "192.168.1.2",
|
|
111
|
-
"acknowledged": true,
|
|
112
|
-
"active": true,
|
|
113
|
-
}]
|
|
114
|
-
>>> result = AlarmsAPI(session).check_alarms(expected = expected_alarms)
|
|
115
|
-
"""
|
|
116
|
-
|
|
117
|
-
alarms_expected = {create_dataclass(AlarmData, flatten_dict(expected_alarm)) for expected_alarm in expected}
|
|
118
|
-
|
|
119
|
-
verification = AlarmVerification(logger, self.get)
|
|
120
|
-
verification.verify(alarms_expected, timeout_seconds, sleep_seconds)
|
|
121
|
-
|
|
122
|
-
logger.info(f"found alarms: {verification.found}")
|
|
123
|
-
logger.info(f"not-found alarms: {verification.not_found}")
|
|
124
|
-
|
|
125
|
-
return {"found": verification.found, "not-found": verification.not_found}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
class AlarmVerification:
|
|
129
|
-
"""The Alarms verification class
|
|
130
|
-
|
|
131
|
-
Attributes:
|
|
132
|
-
alarms_getter (Callable): The function that returns a set of current alarms.
|
|
133
|
-
logger (Logger): Logger.
|
|
134
|
-
"""
|
|
135
|
-
|
|
136
|
-
def __init__(self, logger: logging.Logger, alarms_getter: Callable[[], DataSequence[AlarmData]]) -> None:
|
|
137
|
-
self.alarms_getter = alarms_getter
|
|
138
|
-
self.logger = logger
|
|
139
|
-
|
|
140
|
-
def __check(self, expected: AlarmData) -> bool:
|
|
141
|
-
"""The checking if the expected alarm is included in the alarm set.
|
|
142
|
-
|
|
143
|
-
Args:
|
|
144
|
-
expected(AlarmData): The expected alarm.
|
|
145
|
-
|
|
146
|
-
Returns:
|
|
147
|
-
True if the requested alarm appears in the current alarm set.
|
|
148
|
-
"""
|
|
149
|
-
not_viewed_alarms = self.alarms_getter().filter(viewed=False)
|
|
150
|
-
checked = {expected.lowercase().issubset(actual.lowercase()) for actual in not_viewed_alarms}
|
|
151
|
-
return any(checked)
|
|
152
|
-
|
|
153
|
-
def verify(self, expected: Set[AlarmData], timeout_seconds: int, sleep_seconds: int):
|
|
154
|
-
"""The verifying if the expected alarms is included in the actual alarms set.
|
|
155
|
-
|
|
156
|
-
Args:
|
|
157
|
-
expected(Set[AlarmData]): The set expected alarms.
|
|
158
|
-
timeout_seconds (int): Failure timeout.
|
|
159
|
-
sleep_seconds (int): Sleep time.
|
|
160
|
-
|
|
161
|
-
"""
|
|
162
|
-
self.found: Set[AlarmData] = set()
|
|
163
|
-
self.not_found: Set[AlarmData] = set()
|
|
164
|
-
|
|
165
|
-
def _log_exception(retry_state):
|
|
166
|
-
self.logger.error(f"Cannot found alarms in {timeout_seconds}.")
|
|
167
|
-
self.logger.error(f"Original exception: {retry_state.outcome.exception()}.")
|
|
168
|
-
|
|
169
|
-
def check(founds):
|
|
170
|
-
return expected != founds
|
|
171
|
-
|
|
172
|
-
@retry(
|
|
173
|
-
wait=wait_fixed(sleep_seconds),
|
|
174
|
-
stop=stop_after_attempt(int(timeout_seconds / sleep_seconds)),
|
|
175
|
-
retry=retry_if_result(check),
|
|
176
|
-
retry_error_callback=_log_exception,
|
|
177
|
-
)
|
|
178
|
-
def wait_for_alarms():
|
|
179
|
-
self.logger.info(f"waiting for alarms: {expected ^ self.found}")
|
|
180
|
-
for expected_alarm in expected ^ self.found:
|
|
181
|
-
if self.__check(expected_alarm):
|
|
182
|
-
self.found.add(expected_alarm)
|
|
183
|
-
self.not_found = expected ^ self.found
|
|
184
|
-
return self.found
|
|
185
|
-
|
|
186
|
-
wait_for_alarms()
|
catalystwan/api/api_container.py
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
6
|
-
|
|
7
|
-
from catalystwan.api.admin_tech_api import AdminTechAPI
|
|
8
|
-
from catalystwan.api.administration import (
|
|
9
|
-
AdministrationSettingsAPI,
|
|
10
|
-
ClusterManagementAPI,
|
|
11
|
-
ResourceGroupsAPI,
|
|
12
|
-
SessionsAPI,
|
|
13
|
-
UserGroupsAPI,
|
|
14
|
-
UsersAPI,
|
|
15
|
-
)
|
|
16
|
-
from catalystwan.api.alarms_api import AlarmsAPI
|
|
17
|
-
from catalystwan.api.basic_api import DevicesAPI, DeviceStateAPI
|
|
18
|
-
from catalystwan.api.builders import BuilderAPI
|
|
19
|
-
from catalystwan.api.config_device_inventory_api import ConfigurationDeviceInventoryAPI
|
|
20
|
-
from catalystwan.api.config_group_api import ConfigGroupAPI
|
|
21
|
-
from catalystwan.api.dashboard_api import DashboardAPI
|
|
22
|
-
from catalystwan.api.feature_profile_api import SDRoutingFeatureProfilesAPI, SDWANFeatureProfilesAPI
|
|
23
|
-
from catalystwan.api.logs_api import LogsAPI
|
|
24
|
-
from catalystwan.api.omp_api import OmpAPI
|
|
25
|
-
from catalystwan.api.packet_capture_api import PacketCaptureAPI
|
|
26
|
-
from catalystwan.api.partition_manager_api import PartitionManagerAPI
|
|
27
|
-
from catalystwan.api.policy_api import PolicyAPI
|
|
28
|
-
from catalystwan.api.resource_pool_api import ResourcePoolAPI
|
|
29
|
-
from catalystwan.api.software_action_api import SoftwareActionAPI
|
|
30
|
-
from catalystwan.api.speedtest_api import SpeedtestAPI
|
|
31
|
-
from catalystwan.api.template_api import TemplatesAPI
|
|
32
|
-
from catalystwan.api.tenant_backup_restore_api import TenantBackupRestoreAPI
|
|
33
|
-
from catalystwan.api.tenant_management_api import TenantManagementAPI
|
|
34
|
-
from catalystwan.api.tenant_migration_api import TenantMigrationAPI
|
|
35
|
-
from catalystwan.api.versions_utils import RepositoryAPI
|
|
36
|
-
from catalystwan.api.virtual_image_action_api import LxcActionAPI
|
|
37
|
-
|
|
38
|
-
if TYPE_CHECKING:
|
|
39
|
-
from catalystwan.session import ManagerSession
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class APIContainer:
|
|
43
|
-
def __init__(self, session: ManagerSession):
|
|
44
|
-
self.tenant_management = TenantManagementAPI(session)
|
|
45
|
-
self.admin_tech = AdminTechAPI(session)
|
|
46
|
-
self.administration_settings = AdministrationSettingsAPI(session)
|
|
47
|
-
self.alarms = AlarmsAPI(session)
|
|
48
|
-
self.config_device_inventory_api = ConfigurationDeviceInventoryAPI(session)
|
|
49
|
-
self.config_group = ConfigGroupAPI(session)
|
|
50
|
-
self.dashboard = DashboardAPI(session)
|
|
51
|
-
self.devices = DevicesAPI(session)
|
|
52
|
-
self.device_state = DeviceStateAPI(session)
|
|
53
|
-
self.logs = LogsAPI(session)
|
|
54
|
-
self.omp = OmpAPI(session)
|
|
55
|
-
self.packet_capture = PacketCaptureAPI(session)
|
|
56
|
-
self.speedtest = SpeedtestAPI(session)
|
|
57
|
-
self.templates = TemplatesAPI(session)
|
|
58
|
-
self.tenant_backup = TenantBackupRestoreAPI(session)
|
|
59
|
-
self.tenant_migration = TenantMigrationAPI(session)
|
|
60
|
-
self.repository = RepositoryAPI(session)
|
|
61
|
-
self.resource_pool = ResourcePoolAPI(session)
|
|
62
|
-
self.software = SoftwareActionAPI(session)
|
|
63
|
-
self.lxcsoftware = LxcActionAPI(session)
|
|
64
|
-
self.partition = PartitionManagerAPI(session)
|
|
65
|
-
self.users = UsersAPI(session)
|
|
66
|
-
self.cluster_management = ClusterManagementAPI(session)
|
|
67
|
-
self.user_groups = UserGroupsAPI(session)
|
|
68
|
-
self.resource_groups = ResourceGroupsAPI(session)
|
|
69
|
-
self.sessions = SessionsAPI(session)
|
|
70
|
-
self.policy = PolicyAPI(session)
|
|
71
|
-
self.sd_routing_feature_profiles = SDRoutingFeatureProfilesAPI(session)
|
|
72
|
-
self.sdwan_feature_profiles = SDWANFeatureProfilesAPI(session)
|
|
73
|
-
self.builders = BuilderAPI(session)
|