catalystwan 0.40.1.dev6__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.dev6.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 -624
- 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.dev6.dist-info/METADATA +0 -539
- catalystwan-0.40.1.dev6.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.dev6.dist-info → catalystwan-2.0.0a0.dist-info}/LICENSE +0 -0
catalystwan/api/logs_api.py
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from datetime import datetime as dt
|
|
7
|
-
from pathlib import Path
|
|
8
|
-
from typing import TYPE_CHECKING, Optional
|
|
9
|
-
from urllib.parse import quote
|
|
10
|
-
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from catalystwan.session import ManagerSession
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class LogsAPI:
|
|
18
|
-
"""Class for get and save audit log file
|
|
19
|
-
|
|
20
|
-
Usage example:
|
|
21
|
-
# Create session
|
|
22
|
-
session = create_manager_session(...)
|
|
23
|
-
# Get auditlogs
|
|
24
|
-
session.api.logs.get_auditlogs()
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
28
|
-
self.session = session
|
|
29
|
-
|
|
30
|
-
def get_auditlogs(self, file_path: Optional[str] = None, n_hours: int = 1) -> None:
|
|
31
|
-
query = {
|
|
32
|
-
"query": {
|
|
33
|
-
"condition": "AND",
|
|
34
|
-
"rules": [
|
|
35
|
-
{
|
|
36
|
-
"field": "entry_time",
|
|
37
|
-
"type": "date",
|
|
38
|
-
"value": [f"{n_hours}"],
|
|
39
|
-
"operator": "last_n_hours",
|
|
40
|
-
}
|
|
41
|
-
],
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
addon_to_url = quote(str(query), safe="").replace("%27", "%22")
|
|
45
|
-
|
|
46
|
-
url_path = f"/dataservice/auditlog/severity?query={addon_to_url}"
|
|
47
|
-
logs = self.session.get_data(url_path)
|
|
48
|
-
|
|
49
|
-
if file_path is None:
|
|
50
|
-
file_path = str(Path(__file__).parents[0] / "audit.log")
|
|
51
|
-
|
|
52
|
-
with open(file_path, "w") as file:
|
|
53
|
-
for log in logs:
|
|
54
|
-
time = dt.utcfromtimestamp(log["entry_time"] / 1000)
|
|
55
|
-
time_readable = time.strftime("%Y-%m-%d %H:%M:%S")
|
|
56
|
-
file.write(
|
|
57
|
-
f"Entry time: {time_readable} - LogId: {log['logid']} - "
|
|
58
|
-
f"Log message: {log['logmessage']} - TenantId: {log['tenant']}\n"
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
logger.info(f"Logs saved to {file_path}")
|
|
62
|
-
|
|
63
|
-
return None
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from typing import TYPE_CHECKING, List
|
|
7
|
-
|
|
8
|
-
from catalystwan.endpoints.monitoring.status import MonitoringStatus, Status, UpdateStatus
|
|
9
|
-
from catalystwan.typed_list import DataSequence
|
|
10
|
-
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from catalystwan.session import ManagerSession
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class MonitoringStatusAPI:
|
|
18
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
19
|
-
self.session = session
|
|
20
|
-
self._endpoints = MonitoringStatus(session)
|
|
21
|
-
|
|
22
|
-
def __str__(self) -> str:
|
|
23
|
-
return str(self.session)
|
|
24
|
-
|
|
25
|
-
def get_statistic_settings(self) -> DataSequence[Status]:
|
|
26
|
-
"""Get list of enabled statistics indexes
|
|
27
|
-
|
|
28
|
-
Returns:
|
|
29
|
-
DataSequence[EnabledIndex]: DataSequence of EnabledIndex objects
|
|
30
|
-
"""
|
|
31
|
-
return self._endpoints.get_statistics_settings()
|
|
32
|
-
|
|
33
|
-
def update_statistics_settings(self, payload: List[UpdateStatus]) -> DataSequence[Status]:
|
|
34
|
-
"""Update statistics indexes
|
|
35
|
-
|
|
36
|
-
Args:
|
|
37
|
-
payload (list[Status]): list of UpdateStatus objects
|
|
38
|
-
|
|
39
|
-
Returns:
|
|
40
|
-
DataSequence[Status]: DataSequence of Status objects
|
|
41
|
-
"""
|
|
42
|
-
return self._endpoints.update_statistics_settings(payload)
|
|
43
|
-
|
|
44
|
-
def get_disabled_devices_by_index(self, index_name: str) -> List[str]:
|
|
45
|
-
"""Get list of disabled devices for a statistics index
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
index_name (str): name of the statistics index
|
|
49
|
-
|
|
50
|
-
Returns:
|
|
51
|
-
List[str]: List of disables devices ips
|
|
52
|
-
"""
|
|
53
|
-
return self._endpoints.get_disabled_device_list(index_name).root
|
|
54
|
-
|
|
55
|
-
def update_disabled_devices_by_index(self, index_name: str, payload: List[str]) -> bool:
|
|
56
|
-
"""Update list of disabled devices for a statistics index
|
|
57
|
-
|
|
58
|
-
Args:F
|
|
59
|
-
index_name (str): name of the statistics index
|
|
60
|
-
payload (list[str]): list of str objects
|
|
61
|
-
|
|
62
|
-
Returns:
|
|
63
|
-
bool: True if successful
|
|
64
|
-
"""
|
|
65
|
-
return self._endpoints.update_statistics_device_list(index_name, payload).response
|
|
66
|
-
|
|
67
|
-
def get_enabled_index_for_device(self, device_ip: str) -> List[str]:
|
|
68
|
-
"""Get list of enabled device for statistics index
|
|
69
|
-
|
|
70
|
-
Args:
|
|
71
|
-
device_ip (str): IP address of the device
|
|
72
|
-
|
|
73
|
-
Returns:
|
|
74
|
-
List[str]: List of enables indexes
|
|
75
|
-
"""
|
|
76
|
-
return self._endpoints.get_enabled_index_for_device(device_ip).root
|
catalystwan/api/mtt_aaa_api.py
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
from typing import TYPE_CHECKING
|
|
7
|
-
|
|
8
|
-
from catalystwan.dataclasses import TenantAAA, TenantRadiusServer, TenantTacacsServer
|
|
9
|
-
from catalystwan.exceptions import CatalystwanException
|
|
10
|
-
from catalystwan.utils.creation_tools import asdict, create_dataclass
|
|
11
|
-
|
|
12
|
-
if TYPE_CHECKING:
|
|
13
|
-
from catalystwan.session import ManagerSession
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class AAAConfigNotPresent(CatalystwanException):
|
|
19
|
-
pass
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def status_ok(func):
|
|
23
|
-
def wrapper(*args, **kwargs):
|
|
24
|
-
response = func(*args, **kwargs)
|
|
25
|
-
return True if response.status_code in [200, 204] else False
|
|
26
|
-
|
|
27
|
-
return wrapper
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class TenantAaaAPI:
|
|
31
|
-
"""
|
|
32
|
-
Used to configure mtt tenant management users remote servers
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
36
|
-
self.session = session
|
|
37
|
-
self.url_path = "/dataservice/admin/aaa"
|
|
38
|
-
|
|
39
|
-
def __str__(self) -> str:
|
|
40
|
-
return str(self.session)
|
|
41
|
-
|
|
42
|
-
def aaa_exists(self) -> bool:
|
|
43
|
-
return True if self.session.get_data(self.url_path) else False
|
|
44
|
-
|
|
45
|
-
@status_ok
|
|
46
|
-
def add_aaa(self, tenant_aaa: TenantAAA):
|
|
47
|
-
""" "
|
|
48
|
-
TenantAAA:
|
|
49
|
-
"authOrder": [ "local", "radius", "tacacs"],
|
|
50
|
-
"authFallback": true,
|
|
51
|
-
"adminAuthOrder": false,
|
|
52
|
-
"auditDisable": false,
|
|
53
|
-
"accounting": false,
|
|
54
|
-
"radiusServers": "server1"
|
|
55
|
-
returns bool depending on the api post call
|
|
56
|
-
"""
|
|
57
|
-
data = asdict(tenant_aaa) # type: ignore
|
|
58
|
-
return self.session.post(url=self.url_path, json=data)
|
|
59
|
-
|
|
60
|
-
def get_aaa(self) -> TenantAAA:
|
|
61
|
-
"""
|
|
62
|
-
Returns the Tenant AAA
|
|
63
|
-
:param aaa:
|
|
64
|
-
:return:
|
|
65
|
-
"""
|
|
66
|
-
logger.debug("AAA config")
|
|
67
|
-
tenant_aaa = self.session.get_data(self.url_path)
|
|
68
|
-
# return tenant_aaa
|
|
69
|
-
return create_dataclass(TenantAAA, tenant_aaa)
|
|
70
|
-
|
|
71
|
-
@status_ok
|
|
72
|
-
def del_aaa(self):
|
|
73
|
-
"""
|
|
74
|
-
Delete aaa works only for tenants
|
|
75
|
-
:return:
|
|
76
|
-
"""
|
|
77
|
-
if not self.aaa_exists():
|
|
78
|
-
raise AAAConfigNotPresent("No AAA config present for Tenant")
|
|
79
|
-
logger.debug("Delete AAA config on tenant")
|
|
80
|
-
return self.session.delete(self.url_path)
|
|
81
|
-
|
|
82
|
-
@status_ok
|
|
83
|
-
def put_aaa(self, tenant_AAA: TenantAAA):
|
|
84
|
-
"""
|
|
85
|
-
Updated the AAA for tenant
|
|
86
|
-
:return:
|
|
87
|
-
"""
|
|
88
|
-
data = asdict(tenant_AAA) # type: ignore
|
|
89
|
-
return self.session.put(url=self.url_path, json=data)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class TenantRadiusAPI:
|
|
93
|
-
"""
|
|
94
|
-
Used to configure mtt tenant remote aaa radius servers
|
|
95
|
-
"""
|
|
96
|
-
|
|
97
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
98
|
-
self.session = session
|
|
99
|
-
self.url_path = "/dataservice/admin/radius"
|
|
100
|
-
|
|
101
|
-
def __str__(self) -> str:
|
|
102
|
-
return str(self.session)
|
|
103
|
-
|
|
104
|
-
@status_ok
|
|
105
|
-
def add_radius(self, radius_server: TenantRadiusServer):
|
|
106
|
-
"""
|
|
107
|
-
Create RADIUS for tenant
|
|
108
|
-
:param radius_server:
|
|
109
|
-
:return:
|
|
110
|
-
"""
|
|
111
|
-
logger.debug("Add RADIUS config")
|
|
112
|
-
data = asdict(radius_server) # type: ignore
|
|
113
|
-
return self.session.post(url=self.url_path, json=data)
|
|
114
|
-
|
|
115
|
-
@status_ok
|
|
116
|
-
def put_radius(self, radius_server: TenantRadiusServer):
|
|
117
|
-
"""
|
|
118
|
-
edit radius server
|
|
119
|
-
:param radius_server:
|
|
120
|
-
:return:
|
|
121
|
-
"""
|
|
122
|
-
logger.debug("Update RADIUS config")
|
|
123
|
-
data = asdict(radius_server) # type: ignore
|
|
124
|
-
return self.session.put(url=self.url_path, json=data)
|
|
125
|
-
|
|
126
|
-
@status_ok
|
|
127
|
-
def delete_radius(self):
|
|
128
|
-
"""
|
|
129
|
-
edit radius server
|
|
130
|
-
:param radius_server:
|
|
131
|
-
:return: True|False
|
|
132
|
-
"""
|
|
133
|
-
logger.debug("Delete RADIUS config")
|
|
134
|
-
return self.session.delete(self.url_path)
|
|
135
|
-
|
|
136
|
-
def get_radius(self) -> TenantRadiusServer:
|
|
137
|
-
"""
|
|
138
|
-
Retrieve Radius server
|
|
139
|
-
:return: TenantRadiusServer
|
|
140
|
-
"""
|
|
141
|
-
logger.debug("RADIUS config")
|
|
142
|
-
data = self.session.get_data(self.url_path)
|
|
143
|
-
return create_dataclass(TenantRadiusServer, data)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
class TenantTacacsAPI:
|
|
147
|
-
"""
|
|
148
|
-
Used to configure mtt tenant remote aaa TACACS servers
|
|
149
|
-
"""
|
|
150
|
-
|
|
151
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
152
|
-
self.session = session
|
|
153
|
-
self.url_path = "/dataservice/admin/tacacs"
|
|
154
|
-
|
|
155
|
-
def __str__(self) -> str:
|
|
156
|
-
return str(self.session)
|
|
157
|
-
|
|
158
|
-
@status_ok
|
|
159
|
-
def add_tacacs(self, tacacs_server: TenantTacacsServer):
|
|
160
|
-
"""
|
|
161
|
-
Create TACACS for tenant
|
|
162
|
-
:param tacacs_server:
|
|
163
|
-
:return:
|
|
164
|
-
"""
|
|
165
|
-
logger.debug("TACACS config")
|
|
166
|
-
data = asdict(tacacs_server) # type: ignore
|
|
167
|
-
return self.session.post(url=self.url_path, json=data)
|
|
168
|
-
|
|
169
|
-
@status_ok
|
|
170
|
-
def put_tacacs(self, tacacs_server: TenantTacacsServer):
|
|
171
|
-
"""
|
|
172
|
-
Update tacacs server
|
|
173
|
-
:param tacacs_server:
|
|
174
|
-
:return:
|
|
175
|
-
"""
|
|
176
|
-
logger.debug("Update TACACS config")
|
|
177
|
-
data = asdict(tacacs_server) # type: ignore
|
|
178
|
-
return self.session.put(url=self.url_path, json=data)
|
|
179
|
-
|
|
180
|
-
@status_ok
|
|
181
|
-
def delete_tacacs(self):
|
|
182
|
-
"""
|
|
183
|
-
Deletes tacacs server
|
|
184
|
-
:param tacacs_server:
|
|
185
|
-
:return: True|False
|
|
186
|
-
"""
|
|
187
|
-
logger.debug("Delete TACACS config")
|
|
188
|
-
return self.session.delete(self.url_path)
|
|
189
|
-
|
|
190
|
-
def get_tacacs(self) -> TenantTacacsServer:
|
|
191
|
-
"""
|
|
192
|
-
Retrieves Tacacs server
|
|
193
|
-
:return: TenantTacacsServer
|
|
194
|
-
"""
|
|
195
|
-
logger.debug("TACACS config")
|
|
196
|
-
data = self.session.get_data(self.url_path)
|
|
197
|
-
return create_dataclass(TenantTacacsServer, data)
|
catalystwan/api/omp_api.py
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import TYPE_CHECKING, List
|
|
6
|
-
|
|
7
|
-
from catalystwan.dataclasses import (
|
|
8
|
-
OmpAdvertisedRouteData,
|
|
9
|
-
OmpAdvertisedTlocData,
|
|
10
|
-
OmpPeerData,
|
|
11
|
-
OmpReceivedRouteData,
|
|
12
|
-
OmpReceivedTlocData,
|
|
13
|
-
OmpServiceData,
|
|
14
|
-
OmpSummaryData,
|
|
15
|
-
)
|
|
16
|
-
from catalystwan.utils.creation_tools import create_dataclass
|
|
17
|
-
|
|
18
|
-
if TYPE_CHECKING:
|
|
19
|
-
from catalystwan.session import ManagerSession
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class OmpAPI:
|
|
23
|
-
"""OMP API methods of vManage for get common omp data.
|
|
24
|
-
|
|
25
|
-
Attributes:
|
|
26
|
-
session (ManagerSession): logged in API client session
|
|
27
|
-
|
|
28
|
-
Usage example:
|
|
29
|
-
# Create session and chose device
|
|
30
|
-
session = create_manager_session(...)
|
|
31
|
-
device = DevicesAPI(session).get().filter(personality = Personality.VSMART)[0]
|
|
32
|
-
# Gets OMP peers for a device
|
|
33
|
-
omp_peers = session.api.omp.get_omp_peers(device.id)
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
37
|
-
self.session = session
|
|
38
|
-
|
|
39
|
-
def __str__(self) -> str:
|
|
40
|
-
return str(self.session)
|
|
41
|
-
|
|
42
|
-
def get_omp_peers(self, device_id: str) -> List[OmpPeerData]:
|
|
43
|
-
"""Gets OMP peers for a device.
|
|
44
|
-
|
|
45
|
-
Args:
|
|
46
|
-
device_id (str): device ID (usually system-ip)
|
|
47
|
-
|
|
48
|
-
Returns:
|
|
49
|
-
List[OmpPeerData]: OmpPeerData object
|
|
50
|
-
"""
|
|
51
|
-
items = self.session.get_data(f"/dataservice/device/omp/peers?deviceId={device_id}")
|
|
52
|
-
return [create_dataclass(OmpPeerData, item) for item in items]
|
|
53
|
-
|
|
54
|
-
def get_advertised_routes(self, device_id: str) -> List[OmpAdvertisedRouteData]:
|
|
55
|
-
"""Gets OMP advertised routes data for a device.
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
device_id (str): device ID (usually system-ip)
|
|
59
|
-
|
|
60
|
-
Returns:
|
|
61
|
-
List[OmpAdvertisedRouteData]: OmpAdvertisedRouteData objects
|
|
62
|
-
"""
|
|
63
|
-
items = self.session.get_data(f"/dataservice/device/omp/routes/advertised?deviceId={device_id}")
|
|
64
|
-
return [create_dataclass(OmpAdvertisedRouteData, item) for item in items]
|
|
65
|
-
|
|
66
|
-
def get_received_routes(self, device_id: str) -> List[OmpReceivedRouteData]:
|
|
67
|
-
"""Gets OMP received routes data for a device.
|
|
68
|
-
|
|
69
|
-
Args:
|
|
70
|
-
device_id (str): device ID (usually system-ip)
|
|
71
|
-
|
|
72
|
-
Returns:
|
|
73
|
-
List[OmpReceivedRouteData]: OmpReceivedRouteData objects
|
|
74
|
-
"""
|
|
75
|
-
items = self.session.get_data(f"/dataservice/device/omp/routes/received?deviceId={device_id}")
|
|
76
|
-
return [create_dataclass(OmpReceivedRouteData, item) for item in items]
|
|
77
|
-
|
|
78
|
-
def get_advertised_tlocs(self, device_id: str) -> List[OmpAdvertisedTlocData]:
|
|
79
|
-
"""Gets OMP advertised TLOCs data for a device.
|
|
80
|
-
|
|
81
|
-
Args:
|
|
82
|
-
device_id (str): device_id: device ID (usually system-ip)
|
|
83
|
-
|
|
84
|
-
Returns:
|
|
85
|
-
List[OmpAdvertisedTlocData]: OmpAdvertisedTlocData objects
|
|
86
|
-
"""
|
|
87
|
-
items = self.session.get_data(f"/dataservice/device/omp/tlocs/advertised?deviceId={device_id}")
|
|
88
|
-
return [create_dataclass(OmpAdvertisedTlocData, item) for item in items]
|
|
89
|
-
|
|
90
|
-
def get_received_tlocs(self, device_id: str) -> List[OmpReceivedTlocData]:
|
|
91
|
-
"""Gets OMP received TLOCs for a device.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
device_id (str): device ID (usually system-ip)
|
|
95
|
-
|
|
96
|
-
Returns:
|
|
97
|
-
List[OmpReceivedTlocData]: OmpReceivedTlocData objects
|
|
98
|
-
"""
|
|
99
|
-
items = self.session.get_data(f"/dataservice/device/omp/tlocs/received?deviceId={device_id}")
|
|
100
|
-
return [create_dataclass(OmpReceivedTlocData, item) for item in items]
|
|
101
|
-
|
|
102
|
-
def get_services(self, device_id: str) -> List[OmpServiceData]:
|
|
103
|
-
"""Gets OMP services data for a device.
|
|
104
|
-
|
|
105
|
-
Args:
|
|
106
|
-
device_id (str): device ID (usually system-ip)
|
|
107
|
-
|
|
108
|
-
Returns:
|
|
109
|
-
List[OmpServiceData]: OmpServiceData objects
|
|
110
|
-
"""
|
|
111
|
-
items = self.session.get_data(f"/dataservice/device/omp/services?deviceId={device_id}")
|
|
112
|
-
return [create_dataclass(OmpServiceData, item) for item in items]
|
|
113
|
-
|
|
114
|
-
def get_omp_summary(self, device_id: str) -> List[OmpSummaryData]:
|
|
115
|
-
"""Gets OMP summaries data for a device.
|
|
116
|
-
|
|
117
|
-
Args:
|
|
118
|
-
device_id (str): device ID (usually system-ip)
|
|
119
|
-
|
|
120
|
-
Returns:
|
|
121
|
-
List[OmpSummaryData]: OmpSummaryData objects
|
|
122
|
-
"""
|
|
123
|
-
items = self.session.get_data(f"/dataservice/device/omp/summary?deviceId={device_id}")
|
|
124
|
-
return [create_dataclass(OmpSummaryData, item) for item in items]
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import logging
|
|
6
|
-
import time
|
|
7
|
-
from contextlib import contextmanager
|
|
8
|
-
from enum import Enum
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from typing import TYPE_CHECKING, Iterator, Optional
|
|
11
|
-
|
|
12
|
-
from catalystwan.api.basic_api import DeviceStateAPI
|
|
13
|
-
from catalystwan.dataclasses import Device, PacketSetup, Status
|
|
14
|
-
from catalystwan.utils.creation_tools import create_dataclass
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from catalystwan.session import ManagerSession
|
|
18
|
-
|
|
19
|
-
logger = logging.getLogger(__name__)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class DownloadStatus(Enum):
|
|
23
|
-
COMPLETED = "COMPLETED"
|
|
24
|
-
IMPOSSIBLE = "IMPOSSIBLE"
|
|
25
|
-
FILESIZE = None
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class PacketCaptureAPI:
|
|
29
|
-
"""Methods for setting up packet capture session, and download .pcap session file.
|
|
30
|
-
|
|
31
|
-
Args:
|
|
32
|
-
session:
|
|
33
|
-
vpn: Defaults to 0.
|
|
34
|
-
interface: Defaults to ge0/1.
|
|
35
|
-
|
|
36
|
-
Examples:
|
|
37
|
-
>>> edge_device = session.api.devices.get().filter(personality=Personality.EDGE)[0]
|
|
38
|
-
>>> packet_capture = session.api.packet_capture.get_packets(edge_device)
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
def __init__(
|
|
42
|
-
self,
|
|
43
|
-
session: ManagerSession,
|
|
44
|
-
vpn: str = "0",
|
|
45
|
-
interface: str = "ge0/1",
|
|
46
|
-
) -> None:
|
|
47
|
-
self.session = session
|
|
48
|
-
self.vpn = vpn
|
|
49
|
-
self.interface = interface
|
|
50
|
-
|
|
51
|
-
def get_packets(self, device: Device, duration_seconds=120) -> Status:
|
|
52
|
-
"""Initiate packet capture process.
|
|
53
|
-
|
|
54
|
-
Args:
|
|
55
|
-
device (Device): Device class object
|
|
56
|
-
duration_seconds (int, optional): Duration od packet capturing . Defaults to 20.
|
|
57
|
-
|
|
58
|
-
Returns:
|
|
59
|
-
Status
|
|
60
|
-
"""
|
|
61
|
-
with DeviceStateAPI(self.session).enable_data_stream():
|
|
62
|
-
try:
|
|
63
|
-
with self.channel(device):
|
|
64
|
-
with self.start_stop(device):
|
|
65
|
-
time.sleep(duration_seconds)
|
|
66
|
-
except PermissionError as err:
|
|
67
|
-
failed_status_dict = {
|
|
68
|
-
"fileDownloadStatus": DownloadStatus.IMPOSSIBLE.value,
|
|
69
|
-
"fileSize": DownloadStatus.FILESIZE.value,
|
|
70
|
-
}
|
|
71
|
-
self.status = create_dataclass(Status, failed_status_dict)
|
|
72
|
-
logger.error(str(err))
|
|
73
|
-
return self.status
|
|
74
|
-
|
|
75
|
-
@contextmanager
|
|
76
|
-
def channel(self, device: Device) -> Iterator:
|
|
77
|
-
"""Creates packet capture session.
|
|
78
|
-
|
|
79
|
-
Args:
|
|
80
|
-
device (Device): Device class object
|
|
81
|
-
|
|
82
|
-
Raises:
|
|
83
|
-
PermissionError: if already another packet capture session is active
|
|
84
|
-
|
|
85
|
-
Yields:
|
|
86
|
-
Iterator: packet_channel which contains session ID
|
|
87
|
-
"""
|
|
88
|
-
query = {
|
|
89
|
-
"deviceUUID": device.uuid,
|
|
90
|
-
"vpn": self.vpn,
|
|
91
|
-
"interface": self.interface,
|
|
92
|
-
"type": "control",
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
try:
|
|
96
|
-
url_path = r"/dataservice/stream/device/capture"
|
|
97
|
-
packet_setup = self.session.post(url=url_path, json=query).json()
|
|
98
|
-
logger.debug(f"Packet capture session for device {device.uuid} has been opened")
|
|
99
|
-
self.packet_channel = create_dataclass(PacketSetup, packet_setup)
|
|
100
|
-
if self.packet_channel.is_new_session is True:
|
|
101
|
-
yield self.packet_channel
|
|
102
|
-
else:
|
|
103
|
-
self.status = None # type: ignore
|
|
104
|
-
raise PermissionError("Can't start new session, another is already open")
|
|
105
|
-
finally:
|
|
106
|
-
for _ in range(3):
|
|
107
|
-
time.sleep(10)
|
|
108
|
-
self.status = self.get_status(self.packet_channel)
|
|
109
|
-
if self.status.file_download_status == DownloadStatus.COMPLETED.value:
|
|
110
|
-
self.download_capture_session(self.packet_channel, device)
|
|
111
|
-
logger.debug(f"Packet downloading for device {device.uuid} has been finished")
|
|
112
|
-
url_path = f"/dataservice/stream/device/capture/disable/{self.packet_channel.session_id}"
|
|
113
|
-
self.session.get_json(url_path)
|
|
114
|
-
logger.debug(f"Packet capture session for device {device.uuid} has been disabled")
|
|
115
|
-
break
|
|
116
|
-
|
|
117
|
-
@contextmanager
|
|
118
|
-
def start_stop(self, device: Device) -> Iterator:
|
|
119
|
-
"""Start and stops packet capturing.
|
|
120
|
-
|
|
121
|
-
Yields:
|
|
122
|
-
Iterator: None
|
|
123
|
-
"""
|
|
124
|
-
try:
|
|
125
|
-
url_path = f"/dataservice/stream/device/capture/start/{self.packet_channel.session_id}"
|
|
126
|
-
self.session.get_json(url_path)
|
|
127
|
-
logger.debug(f"Packet capturing for device {device.uuid} has been started")
|
|
128
|
-
yield None
|
|
129
|
-
|
|
130
|
-
finally:
|
|
131
|
-
url_path = f"/dataservice/stream/device/capture/stop/{self.packet_channel.session_id}"
|
|
132
|
-
self.session.get_json(url_path)
|
|
133
|
-
logger.debug(f"Packet capturing for device {device.uuid} has been stoped")
|
|
134
|
-
|
|
135
|
-
def get_interface_name(self, device: Device) -> str:
|
|
136
|
-
url_path = f"/dataservice/device/interface/synced?deviceId={device.local_system_ip}"
|
|
137
|
-
ifname = dict(self.session.get_json(url_path))
|
|
138
|
-
if_name = str(ifname["data"][0]["ifname"])
|
|
139
|
-
return if_name
|
|
140
|
-
|
|
141
|
-
def download_capture_session(self, packet: PacketSetup, device: Device, file_path: Optional[str] = None) -> bool:
|
|
142
|
-
if file_path is None:
|
|
143
|
-
file_path = f"{Path(__file__).parents[0]}/{device.uuid}.pcap"
|
|
144
|
-
url = f"/dataservice/stream/device/capture/download/{packet.session_id}"
|
|
145
|
-
self.session.get_file(url, file_path) # type: ignore
|
|
146
|
-
return True
|
|
147
|
-
|
|
148
|
-
def get_status(self, packet_channel: PacketSetup) -> Status:
|
|
149
|
-
url_path = f"/dataservice/stream/device/capture/status/{packet_channel.session_id}"
|
|
150
|
-
status = self.session.get_json(url_path)
|
|
151
|
-
self.status = create_dataclass(Status, status)
|
|
152
|
-
return self.status
|
catalystwan/api/parcel_api.py
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import TYPE_CHECKING, Protocol
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from catalystwan.session import ManagerSession
|
|
9
|
-
|
|
10
|
-
from catalystwan.endpoints.configuration_feature_profile import ParcelId, SDRoutingConfigurationFeatureProfile
|
|
11
|
-
from catalystwan.models.feature_profile_parcel import FullConfig, FullConfigParcel
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class ParcelAPI(Protocol):
|
|
15
|
-
def create(self, name: str, description: str, data: dict) -> ParcelId:
|
|
16
|
-
...
|
|
17
|
-
|
|
18
|
-
def edit(self, parcel_id: str, name: str, description: str, data: dict) -> None:
|
|
19
|
-
...
|
|
20
|
-
|
|
21
|
-
def delete(self, parcel_id: str) -> None:
|
|
22
|
-
...
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class SDRoutingFullConfigParcelAPI(ParcelAPI):
|
|
26
|
-
def __init__(self, session: ManagerSession, fp_id: str):
|
|
27
|
-
self.session = session
|
|
28
|
-
self.fp_id = fp_id
|
|
29
|
-
self.endpoint = SDRoutingConfigurationFeatureProfile(session)
|
|
30
|
-
|
|
31
|
-
def create(self, name: str, description: str, data: dict) -> ParcelId:
|
|
32
|
-
payload = FullConfigParcel(name=name, description=description, data=FullConfig(fullconfig=data["fullconfig"]))
|
|
33
|
-
|
|
34
|
-
return self.endpoint.create_cli_full_config_parcel(self.fp_id, payload=payload)
|
|
35
|
-
|
|
36
|
-
def edit(self, parcel_id: str, name: str, description: str, data: dict) -> None:
|
|
37
|
-
payload = FullConfigParcel(name=name, description=description, data=FullConfig(fullconfig=data["fullconfig"]))
|
|
38
|
-
|
|
39
|
-
self.endpoint.edit_cli_full_config_parcel(cli_fp_id=self.fp_id, parcel_id=parcel_id, payload=payload)
|
|
40
|
-
|
|
41
|
-
def delete(self, parcel_id: str) -> None:
|
|
42
|
-
self.endpoint.delete_cli_full_config_parcel(cli_fp_id=self.fp_id, parcel_id=parcel_id)
|