catalystwan 0.40.2.dev1__py3-none-any.whl → 2.0.0a1__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} +27 -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 +204 -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} +41 -88
- 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.0a1.dist-info/METADATA +239 -0
- catalystwan-2.0.0a1.dist-info/RECORD +24 -0
- {catalystwan-0.40.2.dev1.dist-info → catalystwan-2.0.0a1.dist-info}/WHEEL +2 -1
- catalystwan-2.0.0a1.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 -189
- 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 -141
- 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 -753
- 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 -790
- 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 -218
- catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
- 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 -110
- 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 -25
- catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
- 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 -178
- 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/ipv4_network_object.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
- 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/network_object_group.py +0 -15
- catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
- 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/service_object_group.py +0 -21
- 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 -609
- catalystwan/models/configuration/feature_profile/sdwan/routing/ospf.py +0 -173
- catalystwan/models/configuration/feature_profile/sdwan/routing/ospfv3.py +0 -301
- catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
- 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/dual_router_ha.py +0 -26
- 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 -404
- 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 -182
- 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_chain.py +0 -38
- catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -184
- catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -110
- 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 -163
- 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 -120
- 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 -173
- catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
- 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 -375
- 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 -77
- 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/models/test_digital_interface.py +0 -56
- 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.2.dev1.dist-info/METADATA +0 -539
- catalystwan-0.40.2.dev1.dist-info/RECORD +0 -628
- /catalystwan/{api → core/models}/__init__.py +0 -0
- /catalystwan/{api/builders/feature_profiles/__init__.py → core/py.typed} +0 -0
- {catalystwan-0.40.2.dev1.dist-info → catalystwan-2.0.0a1.dist-info}/LICENSE +0 -0
catalystwan/api/basic_api.py
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
# Copyright 2022 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
|
|
3
|
-
"""Methods covering essential API endpoints and related data classes."""
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import logging
|
|
7
|
-
from contextlib import contextmanager
|
|
8
|
-
from typing import TYPE_CHECKING, Iterator, List, Union
|
|
9
|
-
|
|
10
|
-
from tenacity import retry, retry_if_result, stop_after_attempt, wait_fixed # type: ignore
|
|
11
|
-
|
|
12
|
-
from catalystwan.dataclasses import BfdSessionData, Connection, Device, WanInterface
|
|
13
|
-
from catalystwan.endpoints.real_time_monitoring.reboot_history import RebootEntry
|
|
14
|
-
from catalystwan.exceptions import CatalystwanException
|
|
15
|
-
from catalystwan.typed_list import DataSequence
|
|
16
|
-
from catalystwan.utils.creation_tools import create_dataclass
|
|
17
|
-
from catalystwan.utils.operation_status import OperationStatus
|
|
18
|
-
from catalystwan.utils.personality import Personality
|
|
19
|
-
from catalystwan.utils.reachability import Reachability
|
|
20
|
-
|
|
21
|
-
if TYPE_CHECKING:
|
|
22
|
-
from catalystwan.session import ManagerSession
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
logger = logging.getLogger(__name__)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class DevicesAPI:
|
|
29
|
-
"""API methods of vManage for getting devices and controllers.
|
|
30
|
-
|
|
31
|
-
Attributes:
|
|
32
|
-
session: logged in API client session
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
max_params = 1000
|
|
36
|
-
|
|
37
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
38
|
-
self.session = session
|
|
39
|
-
|
|
40
|
-
def __str__(self) -> str:
|
|
41
|
-
return str(self.session)
|
|
42
|
-
|
|
43
|
-
@property
|
|
44
|
-
def system_ips(self) -> List[str]:
|
|
45
|
-
"""List of device system IP addresses."""
|
|
46
|
-
return [device.local_system_ip for device in self.get()]
|
|
47
|
-
|
|
48
|
-
@property
|
|
49
|
-
def ips(self):
|
|
50
|
-
"""List of device IP addresses."""
|
|
51
|
-
return [device.id for device in self.get()]
|
|
52
|
-
|
|
53
|
-
def get_system_ip_based_on_local_system_ip(self, local_system_ip) -> str:
|
|
54
|
-
for dev in self.get():
|
|
55
|
-
if local_system_ip == dev.local_system_ip:
|
|
56
|
-
return dev.id
|
|
57
|
-
return ""
|
|
58
|
-
|
|
59
|
-
def get_device_details(self, uuid: str) -> Device:
|
|
60
|
-
"""Gets system information for a device.
|
|
61
|
-
|
|
62
|
-
Args:
|
|
63
|
-
device_id: device ID (usually system-ip)
|
|
64
|
-
|
|
65
|
-
Returns:
|
|
66
|
-
Device object
|
|
67
|
-
"""
|
|
68
|
-
response = self.session.get(f"/dataservice/system/device/vedges?uuid={uuid}")
|
|
69
|
-
|
|
70
|
-
devices = response.dataseq(Device)
|
|
71
|
-
assert len(devices) == 1, "Expected system info response list to have one member"
|
|
72
|
-
|
|
73
|
-
return devices[0]
|
|
74
|
-
|
|
75
|
-
def count_devices(self, personality: Personality) -> int:
|
|
76
|
-
"""Gets number of devices of given personality.
|
|
77
|
-
|
|
78
|
-
Args:
|
|
79
|
-
personality: personality of the device
|
|
80
|
-
|
|
81
|
-
Returns:
|
|
82
|
-
count of devices
|
|
83
|
-
"""
|
|
84
|
-
return sum([1 for device in self.get() if device.personality == personality])
|
|
85
|
-
|
|
86
|
-
def get_reachable_devices(self, personality: Personality) -> DataSequence[Device]:
|
|
87
|
-
"""Get reachable devices by personality.
|
|
88
|
-
|
|
89
|
-
Args:
|
|
90
|
-
personality: personality of the device
|
|
91
|
-
|
|
92
|
-
Returns:
|
|
93
|
-
reachable devices
|
|
94
|
-
"""
|
|
95
|
-
unsupported_personality = [Personality.VMANAGE]
|
|
96
|
-
assert personality not in unsupported_personality, "Unsupported personality for reachable endpoint"
|
|
97
|
-
|
|
98
|
-
devices = self.session.get(f"/dataservice/device/reachable?personality={personality.value}")
|
|
99
|
-
return devices.dataseq(Device)
|
|
100
|
-
|
|
101
|
-
def send_certificate_state_to_controllers(
|
|
102
|
-
self,
|
|
103
|
-
sleep_seconds: int = 5,
|
|
104
|
-
timeout_seconds: int = 600,
|
|
105
|
-
) -> bool:
|
|
106
|
-
"""Sending the current status of certificates to the controllers
|
|
107
|
-
|
|
108
|
-
Returns:
|
|
109
|
-
bool: True if all ok, False like something wrong
|
|
110
|
-
"""
|
|
111
|
-
|
|
112
|
-
def _log_exception(retry_state):
|
|
113
|
-
self.session.__get_logger(f"Orignial exception: {retry_state.outcome.exception()}.")
|
|
114
|
-
|
|
115
|
-
def check_state(action_data):
|
|
116
|
-
list_action = [action["status"] == OperationStatus.SUCCESS.value for action in action_data]
|
|
117
|
-
return not all(list_action)
|
|
118
|
-
|
|
119
|
-
@retry(
|
|
120
|
-
wait=wait_fixed(sleep_seconds),
|
|
121
|
-
stop=stop_after_attempt(int(timeout_seconds / sleep_seconds)),
|
|
122
|
-
retry=retry_if_result(check_state),
|
|
123
|
-
retry_error_callback=_log_exception,
|
|
124
|
-
)
|
|
125
|
-
def wait_for_state():
|
|
126
|
-
status_api = f"/dataservice/device/action/status/{action_id}"
|
|
127
|
-
return self.session.get_data(f"{status_api}")
|
|
128
|
-
|
|
129
|
-
response = self.session.post("/dataservice/certificate/vedge/list?action=push").json()
|
|
130
|
-
if response.get("id"):
|
|
131
|
-
action_id = response["id"]
|
|
132
|
-
else:
|
|
133
|
-
raise CatalystwanException("Failed to push edges list certificates")
|
|
134
|
-
|
|
135
|
-
return True if wait_for_state() else False
|
|
136
|
-
|
|
137
|
-
def get(self, rediscover: bool = False) -> DataSequence[Device]:
|
|
138
|
-
"""Data sequence of all devices.
|
|
139
|
-
|
|
140
|
-
Args:
|
|
141
|
-
rediscover: Rediscover device request payload
|
|
142
|
-
|
|
143
|
-
Returns:
|
|
144
|
-
DataSequence[Device] of all devices
|
|
145
|
-
|
|
146
|
-
## Examples:
|
|
147
|
-
|
|
148
|
-
Get all vManages:
|
|
149
|
-
>>> devices = DevicesAPI(session).get()
|
|
150
|
-
>>> vManages = devices.filter(personality=Personality.VMANAGE)
|
|
151
|
-
"""
|
|
152
|
-
if rediscover:
|
|
153
|
-
logger.info("Rediscovering devices...")
|
|
154
|
-
api = "/dataservice/device/action/rediscoverall"
|
|
155
|
-
self.session.post(url=api)
|
|
156
|
-
devices = self.session.endpoints.monitoring_device_details.list_all_devices()
|
|
157
|
-
device_ids = [device.device_id for device in devices]
|
|
158
|
-
devices_sys_info = DataSequence(Device, [])
|
|
159
|
-
for i in range(0, len(device_ids), self.max_params):
|
|
160
|
-
params = {"deviceId": device_ids[i : i + self.max_params]}
|
|
161
|
-
resp = self.session.get(url="/dataservice/device/system/info", params=params)
|
|
162
|
-
devices_sys_info += resp.dataseq(Device)
|
|
163
|
-
|
|
164
|
-
return devices_sys_info
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
class DeviceStateAPI:
|
|
168
|
-
"""Basic API methods of vManage.
|
|
169
|
-
|
|
170
|
-
Attributes:
|
|
171
|
-
session: logged in API client session
|
|
172
|
-
"""
|
|
173
|
-
|
|
174
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
175
|
-
self.session = session
|
|
176
|
-
|
|
177
|
-
def __str__(self) -> str:
|
|
178
|
-
return str(self.session)
|
|
179
|
-
|
|
180
|
-
def get_device_crash_info(self, device_id: str) -> Union[list, dict]:
|
|
181
|
-
"""Gets crash info for a device.
|
|
182
|
-
|
|
183
|
-
Args:
|
|
184
|
-
device_id: device ID (usually system-ip)
|
|
185
|
-
|
|
186
|
-
Returns:
|
|
187
|
-
Union[list, dict]: list of dicts (FIXME: add mapping to a NamedTuples)
|
|
188
|
-
"""
|
|
189
|
-
return self.session.get_data(f"/dataservice/device/crashlog?deviceId={device_id}")
|
|
190
|
-
|
|
191
|
-
def get_device_control_connections_info(self, device_id) -> List[Connection]:
|
|
192
|
-
"""Gets control connections for a device.
|
|
193
|
-
|
|
194
|
-
Args:
|
|
195
|
-
device_id: device ID (usually system-ip)
|
|
196
|
-
|
|
197
|
-
Returns:
|
|
198
|
-
list of Connection objects
|
|
199
|
-
"""
|
|
200
|
-
items = self.session.get_data(f"/dataservice/device/control/connections?deviceId={device_id}")
|
|
201
|
-
|
|
202
|
-
return [create_dataclass(Connection, item) for item in items]
|
|
203
|
-
|
|
204
|
-
def get_device_orchestrator_connections_info(self, device_id) -> List[Connection]:
|
|
205
|
-
"""Gets orchestrator connections for a device
|
|
206
|
-
|
|
207
|
-
Args:
|
|
208
|
-
device_id: device ID (usually system-ip)
|
|
209
|
-
|
|
210
|
-
Returns:
|
|
211
|
-
list of Connection objects
|
|
212
|
-
"""
|
|
213
|
-
items = self.session.get_data(f"/dataservice/device/orchestrator/connections?deviceId={device_id}")
|
|
214
|
-
|
|
215
|
-
return [create_dataclass(Connection, item) for item in items]
|
|
216
|
-
|
|
217
|
-
def get_device_reboot_history(self, device_id) -> DataSequence[RebootEntry]:
|
|
218
|
-
"""Gets device reboots list.
|
|
219
|
-
|
|
220
|
-
Args:
|
|
221
|
-
device_id: device ID (usually system-ip)
|
|
222
|
-
|
|
223
|
-
Returns:
|
|
224
|
-
list of Reboot objects
|
|
225
|
-
"""
|
|
226
|
-
params = {"deviceId": device_id}
|
|
227
|
-
return self.session.endpoints.real_time_monitoring.reboot_history.create_reboot_history_list(params)
|
|
228
|
-
|
|
229
|
-
def get_system_status(self, device_id: str) -> Device:
|
|
230
|
-
"""Get system information for a device.
|
|
231
|
-
|
|
232
|
-
Args:
|
|
233
|
-
device_id: device ID (usually system-ip)
|
|
234
|
-
|
|
235
|
-
Returns:
|
|
236
|
-
Device object
|
|
237
|
-
"""
|
|
238
|
-
devices = self.session.get_data(f"/dataservice/device/system/info?deviceId={device_id}")
|
|
239
|
-
|
|
240
|
-
assert len(devices) == 1, "Expected system info response list to have one member"
|
|
241
|
-
|
|
242
|
-
return create_dataclass(Device, devices[0])
|
|
243
|
-
|
|
244
|
-
def get_device_wan_interfaces(self, device_id: str):
|
|
245
|
-
wan_interfaces = self.session.get_data(f"/dataservice/device/control/waninterface?deviceId={device_id}")
|
|
246
|
-
return [create_dataclass(WanInterface, wan_ifc) for wan_ifc in wan_interfaces]
|
|
247
|
-
|
|
248
|
-
def get_colors(self, device_id: str) -> List[str]:
|
|
249
|
-
url = "/dataservice/device/bfd/state/device/tlocInterfaceMap"
|
|
250
|
-
colors_raw = DevicesAPI(self.session).session.get_json(url + f"?deviceId={device_id}")
|
|
251
|
-
colors = list(colors_raw["intfList"].keys())
|
|
252
|
-
|
|
253
|
-
return colors
|
|
254
|
-
|
|
255
|
-
@contextmanager
|
|
256
|
-
def enable_data_stream(self) -> Iterator: # TODO check
|
|
257
|
-
try:
|
|
258
|
-
url_path = "/dataservice/settings/configuration/vmanagedatastream"
|
|
259
|
-
data_stream_status = self.session.get_data(url_path)[0]
|
|
260
|
-
query = { # TODO Dict[str, obj]
|
|
261
|
-
"enable": True,
|
|
262
|
-
"ipType": "systemIp",
|
|
263
|
-
"serverHostName": "systemIp",
|
|
264
|
-
"vpn": "0",
|
|
265
|
-
}
|
|
266
|
-
url_path = "/dataservice/settings/configuration/vmanagedatastream"
|
|
267
|
-
self.session.post(url=url_path, json=query)
|
|
268
|
-
yield None
|
|
269
|
-
finally:
|
|
270
|
-
url_path = "/dataservice/settings/configuration/vmanagedatastream"
|
|
271
|
-
self.session.post(url=url_path, json=data_stream_status)
|
|
272
|
-
|
|
273
|
-
def get_bfd_sessions(self, device_id: str) -> List[BfdSessionData]:
|
|
274
|
-
items = self.session.get_data(f"/dataservice/device/bfd/sessions?deviceId={device_id}")
|
|
275
|
-
|
|
276
|
-
return [create_dataclass(BfdSessionData, item) for item in items]
|
|
277
|
-
|
|
278
|
-
def wait_for_bfd_session_up(
|
|
279
|
-
self,
|
|
280
|
-
system_ip: str,
|
|
281
|
-
sleep_seconds: int = 5,
|
|
282
|
-
timeout_seconds: int = 60,
|
|
283
|
-
exp_state: str = "up",
|
|
284
|
-
):
|
|
285
|
-
def check_state(bfd_sessions):
|
|
286
|
-
return not all([bfd_session.state == exp_state for bfd_session in bfd_sessions])
|
|
287
|
-
|
|
288
|
-
@retry(
|
|
289
|
-
wait=wait_fixed(sleep_seconds),
|
|
290
|
-
stop=stop_after_attempt(int(timeout_seconds / sleep_seconds)),
|
|
291
|
-
retry=retry_if_result(check_state),
|
|
292
|
-
)
|
|
293
|
-
def wait_for_bfd_session_come_up():
|
|
294
|
-
return self.get_bfd_sessions(system_ip)
|
|
295
|
-
# from my observation it is necessary to wait minimum 5 seconds for BFD's session gets up state
|
|
296
|
-
|
|
297
|
-
wait_for_bfd_session_come_up()
|
|
298
|
-
|
|
299
|
-
def wait_for_device_state(
|
|
300
|
-
self,
|
|
301
|
-
device_id: str,
|
|
302
|
-
sleep_seconds: int = 5,
|
|
303
|
-
timeout_seconds: int = 600,
|
|
304
|
-
exp_state: Reachability = Reachability.REACHABLE,
|
|
305
|
-
):
|
|
306
|
-
"""
|
|
307
|
-
Waiting for the state of the machine.
|
|
308
|
-
|
|
309
|
-
Args:
|
|
310
|
-
device_id(Str): Device ID (usually system-ip)
|
|
311
|
-
timeout_seconds(int): Failure timeout.
|
|
312
|
-
sleep_seconds(int): Sleep time.
|
|
313
|
-
exp_state(Reachability): The expected state of the machine
|
|
314
|
-
|
|
315
|
-
Returns:
|
|
316
|
-
True if the expected state has been achieved
|
|
317
|
-
|
|
318
|
-
"""
|
|
319
|
-
|
|
320
|
-
def _log_exception(retry_state):
|
|
321
|
-
self.session.__get_logger(f"Orignial exception: {retry_state.outcome.exception()}.")
|
|
322
|
-
|
|
323
|
-
def check_state(state):
|
|
324
|
-
return state == exp_state.value
|
|
325
|
-
|
|
326
|
-
@retry(
|
|
327
|
-
wait=wait_fixed(sleep_seconds),
|
|
328
|
-
stop=stop_after_attempt(int(timeout_seconds / sleep_seconds)),
|
|
329
|
-
retry=retry_if_result(check_state),
|
|
330
|
-
retry_error_callback=_log_exception,
|
|
331
|
-
)
|
|
332
|
-
def wait_for_state():
|
|
333
|
-
return self.get_system_status(device_id).reachability
|
|
334
|
-
|
|
335
|
-
return True if wait_for_state() else False
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
__all__ = ["Device"]
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING
|
|
5
|
-
|
|
6
|
-
from catalystwan.api.builders.feature_profiles.builder_factory import FeatureProfileBuilderFactory
|
|
7
|
-
|
|
8
|
-
if TYPE_CHECKING:
|
|
9
|
-
from catalystwan.session import ManagerSession
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class BuilderAPI:
|
|
13
|
-
def __init__(self, session: ManagerSession):
|
|
14
|
-
self.feature_profiles = FeatureProfileBuilderFactory(session=session)
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
import logging
|
|
5
|
-
from typing import TYPE_CHECKING, List
|
|
6
|
-
from uuid import UUID
|
|
7
|
-
|
|
8
|
-
from catalystwan.api.builders.feature_profiles.report import FeatureProfileBuildReport, handle_build_report
|
|
9
|
-
from catalystwan.api.feature_profile_api import ApplicationPriorityFeatureProfileAPI
|
|
10
|
-
from catalystwan.models.configuration.feature_profile.common import FeatureProfileCreationPayload
|
|
11
|
-
from catalystwan.models.configuration.feature_profile.sdwan.application_priority import AnyApplicationPriorityParcel
|
|
12
|
-
|
|
13
|
-
logger = logging.getLogger(__name__)
|
|
14
|
-
|
|
15
|
-
if TYPE_CHECKING:
|
|
16
|
-
from catalystwan.session import ManagerSession
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class ApplicationPriorityFeatureProfileBuilder:
|
|
20
|
-
"""
|
|
21
|
-
A class for building Application Priority feature profiles.
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
25
|
-
"""
|
|
26
|
-
Args:
|
|
27
|
-
session (ManagerSession): The ManagerSession object used for API communication.
|
|
28
|
-
profile_uuid (UUID): The UUID of the profile.
|
|
29
|
-
"""
|
|
30
|
-
self._profile: FeatureProfileCreationPayload
|
|
31
|
-
self._api = ApplicationPriorityFeatureProfileAPI(session)
|
|
32
|
-
self._parcels: List[AnyApplicationPriorityParcel] = []
|
|
33
|
-
|
|
34
|
-
def add_profile_name_and_description(self, feature_profile: FeatureProfileCreationPayload) -> None:
|
|
35
|
-
"""
|
|
36
|
-
Adds a name and description to the feature profile.
|
|
37
|
-
|
|
38
|
-
Args:
|
|
39
|
-
feature_profile (FeatureProfileCreationPayload): Payload containing the name and description.
|
|
40
|
-
|
|
41
|
-
Returns:
|
|
42
|
-
None
|
|
43
|
-
"""
|
|
44
|
-
self._profile = feature_profile
|
|
45
|
-
|
|
46
|
-
def add_parcel(self, parcel: AnyApplicationPriorityParcel) -> None:
|
|
47
|
-
self._parcels.append(parcel)
|
|
48
|
-
|
|
49
|
-
def build(self) -> FeatureProfileBuildReport:
|
|
50
|
-
profile_uuid = self._api.create_profile(self._profile.name, self._profile.description).id
|
|
51
|
-
self.build_report = FeatureProfileBuildReport(profile_uuid=profile_uuid, profile_name=self._profile.name)
|
|
52
|
-
for parcel in self._parcels:
|
|
53
|
-
self._create_parcel(profile_uuid, parcel)
|
|
54
|
-
return self.build_report
|
|
55
|
-
|
|
56
|
-
@handle_build_report
|
|
57
|
-
def _create_parcel(self, profile_uuid: UUID, parcel: AnyApplicationPriorityParcel) -> UUID:
|
|
58
|
-
return self._api.create_parcel(profile_uuid, parcel).id
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, Callable, Mapping, Union
|
|
5
|
-
|
|
6
|
-
from catalystwan.api.builders.feature_profiles.application_priority import ApplicationPriorityFeatureProfileBuilder
|
|
7
|
-
from catalystwan.api.builders.feature_profiles.cli import CliFeatureProfileBuilder
|
|
8
|
-
from catalystwan.api.builders.feature_profiles.other import OtherFeatureProfileBuilder
|
|
9
|
-
from catalystwan.api.builders.feature_profiles.service import ServiceFeatureProfileBuilder
|
|
10
|
-
from catalystwan.api.builders.feature_profiles.system import SystemFeatureProfileBuilder
|
|
11
|
-
from catalystwan.api.builders.feature_profiles.transport import TransportAndManagementProfileBuilder
|
|
12
|
-
from catalystwan.api.builders.feature_profiles.uc_voice import UcVoiceFeatureProfileBuilder
|
|
13
|
-
from catalystwan.exceptions import CatalystwanException
|
|
14
|
-
from catalystwan.models.configuration.feature_profile.common import ProfileType
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from catalystwan.session import ManagerSession
|
|
18
|
-
|
|
19
|
-
FeatureProfileBuilder = Union[
|
|
20
|
-
ServiceFeatureProfileBuilder,
|
|
21
|
-
SystemFeatureProfileBuilder,
|
|
22
|
-
OtherFeatureProfileBuilder,
|
|
23
|
-
TransportAndManagementProfileBuilder,
|
|
24
|
-
CliFeatureProfileBuilder,
|
|
25
|
-
ApplicationPriorityFeatureProfileBuilder,
|
|
26
|
-
UcVoiceFeatureProfileBuilder
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
BUILDER_MAPPING: Mapping[ProfileType, Callable] = {
|
|
30
|
-
"service": ServiceFeatureProfileBuilder,
|
|
31
|
-
"system": SystemFeatureProfileBuilder,
|
|
32
|
-
"other": OtherFeatureProfileBuilder,
|
|
33
|
-
"transport": TransportAndManagementProfileBuilder,
|
|
34
|
-
"cli": CliFeatureProfileBuilder,
|
|
35
|
-
"application-priority": ApplicationPriorityFeatureProfileBuilder,
|
|
36
|
-
"uc-voice": UcVoiceFeatureProfileBuilder,
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
class FeatureProfileBuilderFactory:
|
|
41
|
-
def __init__(self, session: ManagerSession):
|
|
42
|
-
self.session = session
|
|
43
|
-
|
|
44
|
-
def create_builder(self, profile_type: ProfileType) -> FeatureProfileBuilder:
|
|
45
|
-
"""
|
|
46
|
-
Creates a builder for the specified feature profile.
|
|
47
|
-
|
|
48
|
-
Args:
|
|
49
|
-
feature_profile_name (str): The name of the feature profile.
|
|
50
|
-
|
|
51
|
-
Returns:
|
|
52
|
-
FeatureProfileBuilder: The builder for the specified feature profile.
|
|
53
|
-
|
|
54
|
-
Raises:
|
|
55
|
-
CatalystwanException: If the feature profile is not found or has an unsupported type.
|
|
56
|
-
"""
|
|
57
|
-
if profile_type not in BUILDER_MAPPING:
|
|
58
|
-
raise CatalystwanException(f"Unsupported builder for type {profile_type}")
|
|
59
|
-
return BUILDER_MAPPING[profile_type](self.session)
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, List
|
|
5
|
-
from uuid import UUID
|
|
6
|
-
|
|
7
|
-
from catalystwan.api.builders.feature_profiles.report import FeatureProfileBuildReport, handle_build_report
|
|
8
|
-
from catalystwan.api.feature_profile_api import CliFeatureProfileAPI
|
|
9
|
-
from catalystwan.endpoints.configuration.feature_profile.sdwan.cli import CliFeatureProfile
|
|
10
|
-
from catalystwan.models.configuration.feature_profile.common import FeatureProfileCreationPayload
|
|
11
|
-
from catalystwan.models.configuration.feature_profile.sdwan.cli import AnyCliParcel
|
|
12
|
-
|
|
13
|
-
if TYPE_CHECKING:
|
|
14
|
-
from catalystwan.session import ManagerSession
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class CliFeatureProfileBuilder:
|
|
18
|
-
"""
|
|
19
|
-
A class for building Cli feature profiles.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
23
|
-
"""
|
|
24
|
-
Initialize a new instance of the Cli class.
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
session (ManagerSession): The ManagerSession object used for API communication.
|
|
28
|
-
profile_uuid (UUID): The UUID of the profile.
|
|
29
|
-
"""
|
|
30
|
-
self._profile: FeatureProfileCreationPayload
|
|
31
|
-
self._api = CliFeatureProfileAPI(session)
|
|
32
|
-
self._endpoints = CliFeatureProfile(session)
|
|
33
|
-
self._cli_configs: List[AnyCliParcel] = list()
|
|
34
|
-
|
|
35
|
-
def add_profile_name_and_description(self, feature_profile: FeatureProfileCreationPayload) -> None:
|
|
36
|
-
"""
|
|
37
|
-
Adds a name and description to the feature profile.
|
|
38
|
-
|
|
39
|
-
Args:
|
|
40
|
-
name (str): The name of the feature profile.
|
|
41
|
-
description (str): The description of the feature profile.
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
None
|
|
45
|
-
"""
|
|
46
|
-
self._profile = feature_profile
|
|
47
|
-
|
|
48
|
-
def add_parcel(self, parcel: AnyCliParcel) -> None:
|
|
49
|
-
"""
|
|
50
|
-
Adds a parcel to the feature profile.
|
|
51
|
-
|
|
52
|
-
Args:
|
|
53
|
-
parcel (AnyCliParcel): The parcel to add.
|
|
54
|
-
|
|
55
|
-
Returns:
|
|
56
|
-
None
|
|
57
|
-
"""
|
|
58
|
-
self._cli_configs.append(parcel)
|
|
59
|
-
|
|
60
|
-
def build(self) -> FeatureProfileBuildReport:
|
|
61
|
-
"""
|
|
62
|
-
Builds the feature profile.
|
|
63
|
-
|
|
64
|
-
Returns:
|
|
65
|
-
UUID: The UUID of the created feature profile.
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
profile_uuid = self._endpoints.create_profile(self._profile).id
|
|
69
|
-
self.build_report = FeatureProfileBuildReport(profile_uuid=profile_uuid, profile_name=self._profile.name)
|
|
70
|
-
for config_parcel in self._cli_configs:
|
|
71
|
-
self._create_parcel(profile_uuid, config_parcel)
|
|
72
|
-
return self.build_report
|
|
73
|
-
|
|
74
|
-
@handle_build_report
|
|
75
|
-
def _create_parcel(self, profile_uuid: UUID, parcel: AnyCliParcel) -> UUID:
|
|
76
|
-
return self._api.create_parcel(profile_uuid, parcel).id
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
import logging
|
|
5
|
-
from typing import TYPE_CHECKING, List
|
|
6
|
-
from uuid import UUID
|
|
7
|
-
|
|
8
|
-
from catalystwan.api.builders.feature_profiles.report import FeatureProfileBuildReport, handle_build_report
|
|
9
|
-
from catalystwan.api.feature_profile_api import OtherFeatureProfileAPI
|
|
10
|
-
from catalystwan.endpoints.configuration.feature_profile.sdwan.other import OtherFeatureProfile
|
|
11
|
-
from catalystwan.models.configuration.feature_profile.common import FeatureProfileCreationPayload
|
|
12
|
-
from catalystwan.models.configuration.feature_profile.sdwan.other import AnyOtherParcel
|
|
13
|
-
|
|
14
|
-
logger = logging.getLogger(__name__)
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from catalystwan.session import ManagerSession
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class OtherFeatureProfileBuilder:
|
|
21
|
-
"""
|
|
22
|
-
A class for building Other feature profiles.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(self, session: ManagerSession) -> None:
|
|
26
|
-
"""
|
|
27
|
-
Initialize a new instance of the Service class.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
session (ManagerSession): The ManagerSession object used for API communication.
|
|
31
|
-
profile_uuid (UUID): The UUID of the profile.
|
|
32
|
-
"""
|
|
33
|
-
self._profile: FeatureProfileCreationPayload
|
|
34
|
-
self._api = OtherFeatureProfileAPI(session)
|
|
35
|
-
self._endpoints = OtherFeatureProfile(session)
|
|
36
|
-
self._independent_items: List[AnyOtherParcel] = []
|
|
37
|
-
|
|
38
|
-
def add_profile_name_and_description(self, feature_profile: FeatureProfileCreationPayload) -> None:
|
|
39
|
-
"""
|
|
40
|
-
Adds a name and description to the feature profile.
|
|
41
|
-
|
|
42
|
-
Args:
|
|
43
|
-
name (str): The name of the feature profile.
|
|
44
|
-
description (str): The description of the feature profile.
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
None
|
|
48
|
-
"""
|
|
49
|
-
self._profile = feature_profile
|
|
50
|
-
|
|
51
|
-
def add_parcel(self, parcel: AnyOtherParcel) -> None:
|
|
52
|
-
"""
|
|
53
|
-
Adds a parcel to the feature profile.
|
|
54
|
-
|
|
55
|
-
Args:
|
|
56
|
-
parcel (AnySystemParcel): The parcel to add.
|
|
57
|
-
|
|
58
|
-
Returns:
|
|
59
|
-
None
|
|
60
|
-
"""
|
|
61
|
-
self._independent_items.append(parcel)
|
|
62
|
-
|
|
63
|
-
def build(self) -> FeatureProfileBuildReport:
|
|
64
|
-
"""
|
|
65
|
-
Builds the feature profile.
|
|
66
|
-
|
|
67
|
-
Returns:
|
|
68
|
-
UUID: The UUID of the created feature profile.
|
|
69
|
-
"""
|
|
70
|
-
|
|
71
|
-
profile_uuid = self._endpoints.create_sdwan_other_feature_profile(self._profile).id
|
|
72
|
-
self.build_report = FeatureProfileBuildReport(profile_uuid=profile_uuid, profile_name=self._profile.name)
|
|
73
|
-
for parcel in self._independent_items:
|
|
74
|
-
self._create_parcel(profile_uuid, parcel)
|
|
75
|
-
return self.build_report
|
|
76
|
-
|
|
77
|
-
@handle_build_report
|
|
78
|
-
def _create_parcel(self, profile_uuid: UUID, parcel: AnyOtherParcel) -> UUID:
|
|
79
|
-
return self._api.create_parcel(profile_uuid, parcel).id
|