catalystwan 0.33.4.dev2__tar.gz → 0.33.4.dev3__tar.gz
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-0.33.4.dev2 → catalystwan-0.33.4.dev3}/PKG-INFO +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/configuration_groups/parcel.py +22 -5
- catalystwan-0.33.4.dev3/catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +164 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/common.py +40 -15
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +4 -4
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +5 -2
- catalystwan-0.33.4.dev3/catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +161 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_endpoints.py +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_feature_profile_api.py +2 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_models_common.py +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/pyproject.toml +1 -1
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/setup.py +1 -1
- catalystwan-0.33.4.dev2/catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -78
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/LICENSE +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/README.md +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/abstractions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/admin_tech_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/administration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/alarms_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/api_container.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/basic_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/builders/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/builders/feature_profiles/builder_factory.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/builders/feature_profiles/other.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/builders/feature_profiles/service.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/builders/feature_profiles/system.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/config_device_inventory_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/config_group_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/dashboard_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/device_action_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/feature_profile_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/logs_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/monitoring_status_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/mtt_aaa_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/omp_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/packet_capture_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/parcel_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/partition_manager_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/policy_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/resource_pool_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/software_action_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/speedtest_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/task_status_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/template_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/README.md +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/bool_str.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/cli_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/device_template/device_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/device_variable.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/feature_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/feature_template_field.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/feature_template_payload.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_aaa_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_banner_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_bfd_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_bgp_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_logging_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_ntp_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_omp_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_ospf.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_ospfv3.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_snmp_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_system.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cisco_vpn_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/cli_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/omp_vsmart_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/security_vsmart_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/supported.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/models/system_vsmart_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/tenant_backup_restore_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/tenant_management_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/tenant_migration_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/versions_utils.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/dataclasses.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/administration_user_and_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/certificate_management_device.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/certificate_management_vmanage.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/client.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/cluster_management.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/device/software_update.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/disaster_recovery.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/abstractions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/amp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/control.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/app.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/as_path.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/class_map.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/color.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/community.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/local_app.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/mirror.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/policer.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/port.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/region.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/site.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/sla.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/tloc.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/url_allow_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/url_block_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/vpn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/list/zone.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/security_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/vedge_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration/software_actions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_dashboard_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_device_actions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_device_inventory.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_device_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_feature_profile.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/configuration_settings.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/endpoints_container.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/misc.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/monitoring/device_details.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/monitoring/server_info.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/monitoring/status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/sdavc_cloud_connector.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/tenant_backup_restore.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/tenant_management.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/tenant_migration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/exceptions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/feature_profile/sdwan/base.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/test_config_migration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/integration_tests/test_find_template_values.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/logging.conf +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/common.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/config_migration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/docs/README.md +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/docs/diagram.png +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/README.md +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/builder.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/common.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/parcel.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/policer.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/ospf.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/ospfv3.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/transport/bgp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/feature_profile/sdwan/transport/vpn_management.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/profile_type.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/configuration/topology_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/device_inventory.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/feature_profile_parcel.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/misc/application_protocols.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/monitoring/server_info.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/centralized.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/access_control_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/access_control_list_ipv6.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/amp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/control.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/device_access.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/device_access_ipv6.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/hub_and_spoke.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/mesh.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/qos_map.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/rewrite.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/rule_set.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/security_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/traffic_data.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/vpn_membership.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/definition/zone_based_firewall.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/app.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/app_probe.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/as_path.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/class_map.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/color.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/communities.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/data_ipv6_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/data_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/fqdn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/geo_location.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/ips_signature.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/ipv6_prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/local_app.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/local_domain.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/mirror.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/policer.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/port.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/preferred_color_group.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/prefix.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/protocol_name.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/region.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/site.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/sla.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/threat_grid_api_key.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/tloc.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/trunkgroup.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/url.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/vpn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/list/zone.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/localized.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/policy.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/policy_definition.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/policy_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/policy/security.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/templates.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/models/tenant.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/response.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/session.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/config_migration/test_converter_chooser.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/config_migration/test_device_template_with_info.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/config_migration/test_merge_parcels.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/config_migration/test_normalizer.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/Basic_Cisco_VPN_Model.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/banner_1.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/alias.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/basic.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/children.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/children_nested.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/basic/data_path.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/cisco_bfd.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/complex_aaa.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/complex_cisco_vpn.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/default_cisco_system.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/iuo.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/omp_1.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/omp_2.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/definitions/omp_3.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/cisco_aaa.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/cisco_banner.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/cisco_bfd.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/cisco_system.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/cisco_vpn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/models/omp_vsmart.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/alias.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/basic.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/children.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/children_nested.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/basic/data_path.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/cedge_aaa.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/cisco_banner.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/cisco_bfd.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/cisco_system.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/cisco_vpn.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/schemas/omp-vsmart.json +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/test_chose_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/test_deserialize_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/test_generate_payload.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/templates/test_serialize_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_admin_tech_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_administration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_alarms_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_cli_template.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_creation_tools.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_device_action_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_devices_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_feature_template_field.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_logs_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_monitoring_server_info.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_monitoring_status_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_mtt_aaa_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_omp_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_packet_capture.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_partition_manager_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_response.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_session.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_software_action_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_speed_test_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_task_status_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_templates.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_tenant_backup_restore_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_tenant_management_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_tenant_migration_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_typed_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_version.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_version_utils.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_vmanage_auth.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/typed_list.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/alarm_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/certificate_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/colors.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/exceptions.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/aaa.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/appqoe.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/banner.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/base.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/basic.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/bfd.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/bgp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/dhcp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/eigrp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ethernet.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/global_.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/gre.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ipsec.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/logging_.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/multicast.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/normalizer.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ntp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/omp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ospf.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ospfv3.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/parcel_factory.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/security.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/snmp.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/svi.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/switchport.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/thousandeyes.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/ucse.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/vpn.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/feature_template/wireless_lan.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/converters/policy/policy_lists.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/creators/config_pusher.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/creators/strategy/parcels.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/factories/feature_profile_api.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/factories/parcel_pusher.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/reverters/config_reverter.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/steps/__init__.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_migration/steps/transform.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/config_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/creation_tools.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/dashboard.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/device_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/dict.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/feature_template/choose_model.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/feature_template/find_template_values.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/operation_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/personality.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/pydantic_field.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/reachability.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/session_type.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/template_type.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/timezone.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/upgrades_helper.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/utils/validate_status.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/version.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/vmanage_auth.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/workflows/config_migration.py +0 -0
- {catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/workflows/tenant_migration.py +0 -0
{catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/api/configuration_groups/parcel.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
2
|
|
|
3
3
|
from enum import Enum
|
|
4
|
-
from typing import Any, Dict, Generic, Literal, Optional, TypeVar, get_origin
|
|
4
|
+
from typing import Any, Dict, Generic, List, Literal, Optional, Tuple, TypeVar, get_origin
|
|
5
5
|
|
|
6
6
|
from pydantic import (
|
|
7
7
|
AliasPath,
|
|
@@ -9,11 +9,13 @@ from pydantic import (
|
|
|
9
9
|
ConfigDict,
|
|
10
10
|
Field,
|
|
11
11
|
PrivateAttr,
|
|
12
|
+
SerializationInfo,
|
|
12
13
|
SerializerFunctionWrapHandler,
|
|
13
14
|
model_serializer,
|
|
14
15
|
)
|
|
15
16
|
|
|
16
17
|
from catalystwan.exceptions import CatalystwanException
|
|
18
|
+
from catalystwan.models.common import VersionedField
|
|
17
19
|
|
|
18
20
|
T = TypeVar("T")
|
|
19
21
|
|
|
@@ -38,7 +40,7 @@ class _ParcelBase(BaseModel):
|
|
|
38
40
|
_parcel_data_key: str = PrivateAttr(default="data")
|
|
39
41
|
|
|
40
42
|
@model_serializer(mode="wrap")
|
|
41
|
-
def envelope_parcel_data(self, handler: SerializerFunctionWrapHandler) -> Dict[str, Any]:
|
|
43
|
+
def envelope_parcel_data(self, handler: SerializerFunctionWrapHandler, info: SerializationInfo) -> Dict[str, Any]:
|
|
42
44
|
"""
|
|
43
45
|
serializes model fields with respect to field validation_alias,
|
|
44
46
|
sub-classing parcel fields can be defined like following:
|
|
@@ -50,16 +52,23 @@ class _ParcelBase(BaseModel):
|
|
|
50
52
|
model_dict = handler(self)
|
|
51
53
|
model_dict[self._parcel_data_key] = {}
|
|
52
54
|
remove_keys = []
|
|
55
|
+
replaced_keys: Dict[str, Tuple[str, str]] = {}
|
|
53
56
|
|
|
57
|
+
# enveloping
|
|
54
58
|
for key in model_dict.keys():
|
|
55
59
|
field_info = self.model_fields.get(key)
|
|
56
60
|
if field_info and isinstance(field_info.validation_alias, AliasPath):
|
|
57
61
|
aliases = field_info.validation_alias.convert_to_aliases()
|
|
58
62
|
if aliases and aliases[0] == self._parcel_data_key and len(aliases) == 2:
|
|
59
63
|
model_dict[self._parcel_data_key][aliases[1]] = model_dict[key]
|
|
64
|
+
replaced_keys[key] = (self._parcel_data_key, str(aliases[1]))
|
|
60
65
|
remove_keys.append(key)
|
|
61
66
|
for key in remove_keys:
|
|
62
67
|
del model_dict[key]
|
|
68
|
+
|
|
69
|
+
# versioned field update
|
|
70
|
+
model_dict = VersionedField.dump(self.model_fields, model_dict, info, replaced_keys)
|
|
71
|
+
|
|
63
72
|
return model_dict
|
|
64
73
|
|
|
65
74
|
@classmethod
|
|
@@ -120,7 +129,7 @@ class Default(ParcelAttribute, Generic[T]):
|
|
|
120
129
|
option_type: OptionType = Field(
|
|
121
130
|
default=OptionType.DEFAULT, serialization_alias="optionType", validation_alias="optionType"
|
|
122
131
|
)
|
|
123
|
-
value: Optional[
|
|
132
|
+
value: Optional[T] = None
|
|
124
133
|
|
|
125
134
|
|
|
126
135
|
def as_global(value: Any, generic_alias: Any = None):
|
|
@@ -134,10 +143,14 @@ def as_global(value: Any, generic_alias: Any = None):
|
|
|
134
143
|
Global[Any]: global option type object
|
|
135
144
|
"""
|
|
136
145
|
if generic_alias is None:
|
|
146
|
+
if isinstance(value, list):
|
|
147
|
+
if len(value) == 0:
|
|
148
|
+
return Global[List](value=list()) # type: ignore
|
|
149
|
+
return Global[List[type(value[0])]](value=value) # type: ignore
|
|
137
150
|
return Global[type(value)](value=value) # type: ignore
|
|
138
151
|
elif get_origin(generic_alias) is Literal:
|
|
139
152
|
return Global[generic_alias](value=value) # type: ignore
|
|
140
|
-
TypeError("Inappropriate type for argument generic_alias")
|
|
153
|
+
raise TypeError("Inappropriate type for argument generic_alias")
|
|
141
154
|
|
|
142
155
|
|
|
143
156
|
def as_variable(value: str):
|
|
@@ -163,7 +176,11 @@ def as_default(value: Any, generic_alias: Any = None):
|
|
|
163
176
|
Default[Any]: default option type object
|
|
164
177
|
"""
|
|
165
178
|
if generic_alias is None:
|
|
179
|
+
if isinstance(value, list):
|
|
180
|
+
if len(value) == 0:
|
|
181
|
+
return Default[List](value=list()) # type: ignore
|
|
182
|
+
return Default[List[type(value[0])]](value=value) # type: ignore
|
|
166
183
|
return Default[type(value)](value=value) # type: ignore
|
|
167
184
|
elif get_origin(generic_alias) is Literal:
|
|
168
185
|
return Default[generic_alias](value=value) # type: ignore
|
|
169
|
-
TypeError("Inappropriate type for argument generic_alias")
|
|
186
|
+
raise TypeError("Inappropriate type for argument generic_alias")
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
from ipaddress import IPv4Address, IPv6Address
|
|
2
|
+
|
|
3
|
+
from catalystwan.api.configuration_groups.parcel import as_global
|
|
4
|
+
from catalystwan.integration_tests.feature_profile.sdwan.base import TestFeatureProfileModels
|
|
5
|
+
from catalystwan.models.configuration.feature_profile.sdwan.transport.t1e1controller import (
|
|
6
|
+
E1,
|
|
7
|
+
T1,
|
|
8
|
+
CableLengthLong,
|
|
9
|
+
ChannelGroup,
|
|
10
|
+
ClockSource,
|
|
11
|
+
ControllerTxExList,
|
|
12
|
+
ControllerType,
|
|
13
|
+
E1Basic,
|
|
14
|
+
E1Framing,
|
|
15
|
+
E1Linecode,
|
|
16
|
+
LengthLong,
|
|
17
|
+
LineMode,
|
|
18
|
+
T1Basic,
|
|
19
|
+
T1E1ControllerParcel,
|
|
20
|
+
T1Framing,
|
|
21
|
+
T1Linecode,
|
|
22
|
+
)
|
|
23
|
+
from catalystwan.models.configuration.feature_profile.sdwan.transport.vpn_management import (
|
|
24
|
+
DnsIpv4,
|
|
25
|
+
DnsIpv6,
|
|
26
|
+
Ipv4RouteItem,
|
|
27
|
+
Ipv6RouteItem,
|
|
28
|
+
ManagementVpn,
|
|
29
|
+
NewHostMappingItem,
|
|
30
|
+
NextHopItem,
|
|
31
|
+
OneOfIpRouteNull0,
|
|
32
|
+
Prefix,
|
|
33
|
+
SubnetMask,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TestTransportFeatureProfileModels(TestFeatureProfileModels):
|
|
38
|
+
@classmethod
|
|
39
|
+
def setUpClass(cls) -> None:
|
|
40
|
+
super().setUpClass()
|
|
41
|
+
cls.api = cls.session.api.sdwan_feature_profiles.transport
|
|
42
|
+
cls.profile_uuid = cls.api.create_profile("TestProfileService", "Description").id
|
|
43
|
+
|
|
44
|
+
def test_when_fully_specified_management_vpn_parcel_expect_successful_post(self):
|
|
45
|
+
# Arrange
|
|
46
|
+
management_vpn_parcel = ManagementVpn(
|
|
47
|
+
parcel_name="FullySpecifiedManagementVpnParcel",
|
|
48
|
+
description="Description",
|
|
49
|
+
dns_ipv6=DnsIpv6(
|
|
50
|
+
primary_dns_address_ipv6=as_global(IPv6Address("67ca:c2df:edfe:c8ec:b6cb:f9f4:eab0:ece6")),
|
|
51
|
+
secondary_dns_address_ipv6=as_global(IPv6Address("8989:8d33:c00a:4d13:324d:8b23:8d77:a289")),
|
|
52
|
+
),
|
|
53
|
+
dns_ipv4=DnsIpv4(
|
|
54
|
+
primary_dns_address_ipv4=as_global(IPv4Address("68.138.29.222")),
|
|
55
|
+
secondary_dns_address_ipv4=as_global(IPv4Address("122.89.114.112")),
|
|
56
|
+
),
|
|
57
|
+
new_host_mapping=[
|
|
58
|
+
NewHostMappingItem(
|
|
59
|
+
host_name=as_global("FullySpecifiedHost"),
|
|
60
|
+
list_of_ip=as_global(
|
|
61
|
+
[
|
|
62
|
+
"165.16.181.116",
|
|
63
|
+
"7a4c:1d87:8587:a6ec:21a6:48a7:00e8:1fef",
|
|
64
|
+
]
|
|
65
|
+
),
|
|
66
|
+
)
|
|
67
|
+
],
|
|
68
|
+
ipv6_route=[
|
|
69
|
+
Ipv6RouteItem(
|
|
70
|
+
prefix=as_global("0::/16"),
|
|
71
|
+
one_of_ip_route=OneOfIpRouteNull0(),
|
|
72
|
+
)
|
|
73
|
+
],
|
|
74
|
+
ipv4_route=[
|
|
75
|
+
Ipv4RouteItem(
|
|
76
|
+
prefix=Prefix(
|
|
77
|
+
ip_address=as_global(IPv4Address("202.153.165.234")),
|
|
78
|
+
subnet_mask=as_global("255.255.255.0", SubnetMask),
|
|
79
|
+
),
|
|
80
|
+
next_hop=[
|
|
81
|
+
NextHopItem(
|
|
82
|
+
address=as_global(IPv4Address("1.1.1.1")),
|
|
83
|
+
)
|
|
84
|
+
],
|
|
85
|
+
)
|
|
86
|
+
],
|
|
87
|
+
)
|
|
88
|
+
# Act
|
|
89
|
+
parcel_id = self.api.create_parcel(self.profile_uuid, management_vpn_parcel).id
|
|
90
|
+
# Assert
|
|
91
|
+
assert parcel_id
|
|
92
|
+
|
|
93
|
+
def test_when_fully_specified_t1e1controller_type_e1_parcel_expect_successful_post(self):
|
|
94
|
+
# Arrange
|
|
95
|
+
t1e1controller = T1E1ControllerParcel(
|
|
96
|
+
parcel_name="FullySpecifiedT1E1ControllerParcel_type_e1",
|
|
97
|
+
description="Description",
|
|
98
|
+
type=as_global("e1", ControllerType),
|
|
99
|
+
slot=as_global("TypeEOne"),
|
|
100
|
+
controller_tx_ex_list=[
|
|
101
|
+
ControllerTxExList(
|
|
102
|
+
basic=E1Basic(
|
|
103
|
+
e1=E1(
|
|
104
|
+
framing=as_global("crc4", E1Framing),
|
|
105
|
+
linecode=as_global("ami", E1Linecode),
|
|
106
|
+
)
|
|
107
|
+
),
|
|
108
|
+
channel_group=[
|
|
109
|
+
ChannelGroup(
|
|
110
|
+
number=as_global(12),
|
|
111
|
+
timeslots=as_global("1"),
|
|
112
|
+
)
|
|
113
|
+
],
|
|
114
|
+
clock_source=as_global("internal", ClockSource),
|
|
115
|
+
description=as_global("FullySpecifiedDescription"),
|
|
116
|
+
line_mode=as_global("primary", LineMode),
|
|
117
|
+
)
|
|
118
|
+
],
|
|
119
|
+
)
|
|
120
|
+
# Act
|
|
121
|
+
parcel_id = self.api.create_parcel(self.profile_uuid, t1e1controller).id
|
|
122
|
+
# Assert
|
|
123
|
+
assert parcel_id
|
|
124
|
+
|
|
125
|
+
def test_when_fully_specified_t1e1controller_type_t1_parcel_expect_successful_post(self):
|
|
126
|
+
# Arrange
|
|
127
|
+
t1e1controller = T1E1ControllerParcel(
|
|
128
|
+
parcel_name="FullySpecifiedT1E1ControllerParcel_type_t1",
|
|
129
|
+
description="Description",
|
|
130
|
+
type=as_global("t1", ControllerType),
|
|
131
|
+
slot=as_global("TypeTOne"),
|
|
132
|
+
controller_tx_ex_list=[
|
|
133
|
+
ControllerTxExList(
|
|
134
|
+
basic=T1Basic(
|
|
135
|
+
t1=T1(
|
|
136
|
+
framing=as_global("esf", T1Framing),
|
|
137
|
+
linecode=as_global("b8zs", T1Linecode),
|
|
138
|
+
)
|
|
139
|
+
),
|
|
140
|
+
cable=CableLengthLong(
|
|
141
|
+
cable_length=as_global("long", CableLengthLong),
|
|
142
|
+
length_long=as_global("-15db", LengthLong),
|
|
143
|
+
),
|
|
144
|
+
channel_group=[
|
|
145
|
+
ChannelGroup(
|
|
146
|
+
number=as_global(12),
|
|
147
|
+
timeslots=as_global("1"),
|
|
148
|
+
)
|
|
149
|
+
],
|
|
150
|
+
clock_source=as_global("internal", ClockSource),
|
|
151
|
+
description=as_global("FullySpecifiedDescription"),
|
|
152
|
+
line_mode=as_global("primary", LineMode),
|
|
153
|
+
)
|
|
154
|
+
],
|
|
155
|
+
)
|
|
156
|
+
# Act
|
|
157
|
+
parcel_id = self.api.create_parcel(self.profile_uuid, t1e1controller).id
|
|
158
|
+
# Assert
|
|
159
|
+
assert parcel_id
|
|
160
|
+
|
|
161
|
+
@classmethod
|
|
162
|
+
def tearDownClass(cls) -> None:
|
|
163
|
+
cls.api.delete_profile(cls.profile_uuid)
|
|
164
|
+
super().tearDownClass()
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Copyright 2023 Cisco Systems, Inc. and its affiliates
|
|
2
2
|
|
|
3
3
|
from dataclasses import InitVar, dataclass, field
|
|
4
|
-
from typing import Any, Dict, List, Literal, Optional, Sequence, Set, Tuple, Union
|
|
4
|
+
from typing import Any, Dict, Iterator, List, Literal, Mapping, Optional, Sequence, Set, Tuple, Union
|
|
5
5
|
from uuid import UUID
|
|
6
6
|
|
|
7
7
|
from packaging.specifiers import SpecifierSet # type: ignore
|
|
8
8
|
from packaging.version import Version # type: ignore
|
|
9
|
-
from pydantic import PlainSerializer, SerializationInfo
|
|
9
|
+
from pydantic import PlainSerializer, SerializationInfo, ValidationInfo
|
|
10
10
|
from pydantic.fields import FieldInfo
|
|
11
11
|
from pydantic.functional_validators import BeforeValidator
|
|
12
12
|
from typing_extensions import Annotated
|
|
@@ -41,29 +41,54 @@ class VersionedField:
|
|
|
41
41
|
self.versions_set = SpecifierSet(versions)
|
|
42
42
|
|
|
43
43
|
@staticmethod
|
|
44
|
-
def
|
|
45
|
-
model_fields: Dict[str, FieldInfo],
|
|
44
|
+
def model_iterate(
|
|
45
|
+
model_fields: Dict[str, FieldInfo], info: Union[SerializationInfo, ValidationInfo]
|
|
46
|
+
) -> Iterator[Tuple[str, FieldInfo, "VersionedField"]]:
|
|
47
|
+
"""Itrerates over model fields that matches a version given in context (Serialization info or ValidationInfo)
|
|
48
|
+
|
|
49
|
+
Yields:
|
|
50
|
+
Tuple[str, FieldInfo, VersionedField]: a tuple containing field name, FieldInfo and VersionedField
|
|
51
|
+
"""
|
|
52
|
+
if info.context is not None:
|
|
53
|
+
api_version: Optional[Version] = info.context.get("api_version")
|
|
54
|
+
if api_version is not None:
|
|
55
|
+
for field_name, field_info in model_fields.items():
|
|
56
|
+
versioned_fields = [meta for meta in field_info.metadata if isinstance(meta, VersionedField)]
|
|
57
|
+
for versioned_field in versioned_fields:
|
|
58
|
+
if api_version in versioned_field.versions_set:
|
|
59
|
+
yield (field_name, field_info, versioned_field)
|
|
60
|
+
|
|
61
|
+
@staticmethod
|
|
62
|
+
def dump(
|
|
63
|
+
model_fields: Dict[str, FieldInfo],
|
|
64
|
+
model_dict: Dict[str, Any],
|
|
65
|
+
info: SerializationInfo,
|
|
66
|
+
replaced_keys: Optional[Mapping[str, Tuple[Optional[str], str]]] = None,
|
|
46
67
|
) -> Dict[str, Any]:
|
|
47
68
|
"""To be reused in methods decorated with pydantic.model_serializer
|
|
48
69
|
Args:
|
|
49
70
|
model_fields (Dict[str, FieldInfo]): obtained from BaseModel class
|
|
50
71
|
model_dict (Dict[str, Any]): obtained from serialized BaseModel instance
|
|
51
72
|
serialization_info (SerializationInfo): passed from serializer
|
|
73
|
+
replaced_keys (Dict[str, Tuple(Optional[str], str)]): field names that were replaced
|
|
74
|
+
previously during serialization
|
|
75
|
+
(Tuple represent path and new field name - this currently supports up to 1 level deep alias path only)
|
|
52
76
|
|
|
53
77
|
Returns:
|
|
54
78
|
Dict[str, Any]: model_dict with updated field names according to matching runtime version
|
|
55
79
|
"""
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
80
|
+
for field_name, field_info, versioned_field in VersionedField.model_iterate(model_fields, info):
|
|
81
|
+
current_field_name = field_info.serialization_alias or field_info.alias or field_name
|
|
82
|
+
new_field_name = versioned_field.serialization_alias
|
|
83
|
+
if current_field_name in model_dict:
|
|
84
|
+
model_dict[new_field_name] = model_dict[current_field_name]
|
|
85
|
+
del model_dict[current_field_name]
|
|
86
|
+
elif replaced_keys is not None:
|
|
87
|
+
if current_field_path := replaced_keys.get(current_field_name):
|
|
88
|
+
path, name = current_field_path
|
|
89
|
+
dict_ = model_dict[path] if path is not None else model_dict
|
|
90
|
+
dict_[new_field_name] = dict_[name]
|
|
91
|
+
del dict_[name]
|
|
67
92
|
return model_dict
|
|
68
93
|
|
|
69
94
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
2
2
|
|
|
3
|
-
from typing import Literal
|
|
3
|
+
from typing import List, Literal
|
|
4
4
|
|
|
5
5
|
from pydantic import AliasPath, ConfigDict, Field, field_validator
|
|
6
6
|
|
|
7
|
-
from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase
|
|
7
|
+
from catalystwan.api.configuration_groups.parcel import Global, _ParcelBase
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ExpandedCommunityParcel(_ParcelBase):
|
|
11
11
|
type_: Literal["expanded-community"] = Field(default="expanded-community", exclude=True)
|
|
12
12
|
model_config = ConfigDict(populate_by_name=True)
|
|
13
|
-
expanded_community_list: Global[
|
|
14
|
-
default=
|
|
13
|
+
expanded_community_list: Global[List[str]] = Field(
|
|
14
|
+
default=Global[List[str]](value=list()),
|
|
15
15
|
serialization_alias="expandedCommunityList",
|
|
16
16
|
validation_alias=AliasPath("data", "expandedCommunityList"),
|
|
17
17
|
)
|
|
@@ -223,7 +223,7 @@ class ServiceNodeInformationExternal(BaseModel):
|
|
|
223
223
|
|
|
224
224
|
address: Default[ServiceNodeExternalAddress] = Default[ServiceNodeExternalAddress](value="192.168.2.2")
|
|
225
225
|
vpg_ip: Default[ServiceNodeExternalVpgIp] = Field(
|
|
226
|
-
default=Default[ServiceNodeExternalVpgIp](value="192.168.2.1"),
|
|
226
|
+
default=Default[ServiceNodeExternalVpgIp](value="192.168.2.1/24"),
|
|
227
227
|
serialization_alias="vpgIp",
|
|
228
228
|
validation_alias="vpgIp",
|
|
229
229
|
)
|
|
@@ -227,7 +227,7 @@ class RoutePolicySequence(BaseModel):
|
|
|
227
227
|
..., serialization_alias="sequenceName", validation_alias="sequenceName", description="Sequence Name"
|
|
228
228
|
)
|
|
229
229
|
base_action: Union[Global[BaseAction], Default[BaseAction]] = Field(
|
|
230
|
-
default=as_default("
|
|
230
|
+
default=as_default("reject", BaseAction),
|
|
231
231
|
serialization_alias="baseAction",
|
|
232
232
|
validation_alias="baseAction",
|
|
233
233
|
description="Base Action",
|
|
@@ -37,7 +37,7 @@ class UserItem(BaseModel):
|
|
|
37
37
|
)
|
|
38
38
|
)
|
|
39
39
|
privilege: Union[Global[str], Variable, Default[str], None] = Field(
|
|
40
|
-
None, description="Set Privilege Level for this user"
|
|
40
|
+
default=None, description="Set Privilege Level for this user"
|
|
41
41
|
)
|
|
42
42
|
pubkey_chain: Optional[List[PubkeyChainItem]] = Field(
|
|
43
43
|
default=None,
|
|
@@ -7,11 +7,14 @@ from typing_extensions import Annotated
|
|
|
7
7
|
|
|
8
8
|
from .bgp import WanRoutingBgpParcel as BGPParcel
|
|
9
9
|
from .cellular_controller import CellularControllerParcel
|
|
10
|
+
from .t1e1controller import T1E1ControllerParcel
|
|
10
11
|
from .vpn_management import ManagementVpn
|
|
11
12
|
|
|
12
|
-
AnyTransportParcel = Annotated[
|
|
13
|
+
AnyTransportParcel = Annotated[
|
|
14
|
+
Union[BGPParcel, CellularControllerParcel, ManagementVpn, T1E1ControllerParcel], Field(discriminator="type_")
|
|
15
|
+
]
|
|
13
16
|
|
|
14
|
-
__all__ = ["BGPParcel", "CellularControllerParcel", "ManagementVpn", "AnyTransportParcel"]
|
|
17
|
+
__all__ = ["BGPParcel", "CellularControllerParcel", "ManagementVpn", "AnyTransportParcel", "T1E1ControllerParcel"]
|
|
15
18
|
|
|
16
19
|
|
|
17
20
|
def __dir__() -> "List[str]":
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
from typing import List, Literal, Optional, Union
|
|
2
|
+
|
|
3
|
+
from pydantic import AliasPath, BaseModel, ConfigDict, Field
|
|
4
|
+
|
|
5
|
+
from catalystwan.api.configuration_groups.parcel import Default, Global, Variable, _ParcelBase, as_global
|
|
6
|
+
|
|
7
|
+
ControllerType = Literal[
|
|
8
|
+
"e1",
|
|
9
|
+
"t1",
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T1Framing = Literal[
|
|
14
|
+
"esf",
|
|
15
|
+
"sf",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
T1Linecode = Literal[
|
|
19
|
+
"ami",
|
|
20
|
+
"b8zs",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
T1Name = Literal[
|
|
24
|
+
"T1",
|
|
25
|
+
# By default, the name is T1
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class T1(BaseModel):
|
|
30
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
31
|
+
framing: Optional[Union[Global[T1Framing], Variable, Default[None]]] = Field(default=None)
|
|
32
|
+
linecode: Optional[Union[Global[T1Linecode], Variable, Default[None]]] = Field(default=None)
|
|
33
|
+
name: Optional[Global[T1Name]] = Field(default=as_global("T1", T1Name))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class T1Basic(BaseModel):
|
|
37
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
38
|
+
t1: T1 = Field(validation_alias="T1", serialization_alias="T1")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
E1Framing = Literal[
|
|
42
|
+
"crc4",
|
|
43
|
+
"no-crc4",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
E1Linecode = Literal[
|
|
47
|
+
"ami",
|
|
48
|
+
"hdb3",
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
E1Name = Literal[
|
|
52
|
+
"E1",
|
|
53
|
+
# By default, the name is E1
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class E1(BaseModel):
|
|
58
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
59
|
+
framing: Optional[Union[Global[E1Framing], Variable, Default[None]]] = Field(default=None)
|
|
60
|
+
linecode: Optional[Union[Global[E1Linecode], Variable, Default[None]]] = Field(default=None)
|
|
61
|
+
name: Optional[Global[E1Name]] = Field(default=as_global("E1", E1Name))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class E1Basic(BaseModel):
|
|
65
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
66
|
+
e1: E1 = Field(validation_alias="E1", serialization_alias="E1")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class CableLength(BaseModel):
|
|
70
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
71
|
+
cable_length: Optional[Default[None]] = Field(
|
|
72
|
+
default=None, validation_alias="cableLength", serialization_alias="cableLength"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
LengthShort = Literal[
|
|
77
|
+
"110ft",
|
|
78
|
+
"220ft",
|
|
79
|
+
"330ft",
|
|
80
|
+
"440ft",
|
|
81
|
+
"550ft",
|
|
82
|
+
"660ft",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class CableLengthShort(BaseModel):
|
|
87
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
88
|
+
cable_length: Optional[Global[Literal["short"]]] = Field(
|
|
89
|
+
default=None, validation_alias="cableLength", serialization_alias="cableLength"
|
|
90
|
+
)
|
|
91
|
+
length_short: Optional[Union[Global[LengthShort], Variable]] = Field(
|
|
92
|
+
default=None, validation_alias="lengthShort", serialization_alias="lengthShort"
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
Long = Literal["long"]
|
|
97
|
+
|
|
98
|
+
LengthLong = Literal[
|
|
99
|
+
"-15db",
|
|
100
|
+
"-22.5db",
|
|
101
|
+
"-7.5db",
|
|
102
|
+
"0db",
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class CableLengthLong(BaseModel):
|
|
107
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
108
|
+
cable_length: Optional[Global[Long]] = Field(
|
|
109
|
+
default=as_global("long", Long), validation_alias="cableLength", serialization_alias="cableLength"
|
|
110
|
+
)
|
|
111
|
+
length_long: Optional[Union[Global[LengthLong], Variable]] = Field(
|
|
112
|
+
default=None, validation_alias="lengthLong", serialization_alias="lengthLong"
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
ClockSource = Literal[
|
|
117
|
+
"internal",
|
|
118
|
+
"line",
|
|
119
|
+
"loop-timed",
|
|
120
|
+
"network",
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
LineMode = Literal[
|
|
124
|
+
"primary",
|
|
125
|
+
"secondary",
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class ChannelGroup(BaseModel):
|
|
130
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
131
|
+
number: Union[Global[int], Variable] = Field()
|
|
132
|
+
timeslots: Union[Global[str], Variable] = Field()
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class ControllerTxExList(BaseModel):
|
|
136
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
137
|
+
basic: Union[T1Basic, E1Basic]
|
|
138
|
+
cable: Optional[Union[CableLength, CableLengthShort, CableLengthLong]] = Field(default=None)
|
|
139
|
+
channel_group: Optional[List[ChannelGroup]] = Field(
|
|
140
|
+
default=None,
|
|
141
|
+
validation_alias="channelGroup",
|
|
142
|
+
serialization_alias="channelGroup",
|
|
143
|
+
description="Channel Group List",
|
|
144
|
+
)
|
|
145
|
+
clock_source: Optional[Union[Global[ClockSource], Default[None]]] = Field(
|
|
146
|
+
default=None, validation_alias="clockSource", serialization_alias="clockSource"
|
|
147
|
+
)
|
|
148
|
+
description: Optional[Union[Global[str], Variable, Default[None]]] = Field(default=None)
|
|
149
|
+
line_mode: Optional[Union[Global[LineMode], Variable, Default[None]]] = Field(
|
|
150
|
+
default=None, validation_alias="lineMode", serialization_alias="lineMode"
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class T1E1ControllerParcel(_ParcelBase):
|
|
155
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
156
|
+
type_: Literal["t1-e1-controller"] = Field(default="t1-e1-controller", exclude=True)
|
|
157
|
+
controller_tx_ex_list: List[ControllerTxExList] = Field(
|
|
158
|
+
validation_alias=AliasPath("data", "controllerTxExList"), description="Controller tx-ex List"
|
|
159
|
+
)
|
|
160
|
+
slot: Union[Global[str], Variable] = Field(validation_alias=AliasPath("data", "slot"))
|
|
161
|
+
type: Optional[Global[ControllerType]] = Field(default=None, validation_alias=AliasPath("data", "type"))
|
|
@@ -890,7 +890,7 @@ class TestAPIEndpoints(unittest.TestCase):
|
|
|
890
890
|
|
|
891
891
|
@model_serializer(mode="wrap")
|
|
892
892
|
def serialize(self, handler, info):
|
|
893
|
-
return VersionedField.
|
|
893
|
+
return VersionedField.dump(self.model_fields, handler(self), info)
|
|
894
894
|
|
|
895
895
|
class ExampleAPI(APIEndpoints):
|
|
896
896
|
@request("POST", "/v1/data")
|
{catalystwan-0.33.4.dev2 → catalystwan-0.33.4.dev3}/catalystwan/tests/test_feature_profile_api.py
RENAMED
|
@@ -47,7 +47,7 @@ from catalystwan.models.configuration.feature_profile.sdwan.system import (
|
|
|
47
47
|
SecurityParcel,
|
|
48
48
|
SNMPParcel,
|
|
49
49
|
)
|
|
50
|
-
from catalystwan.models.configuration.feature_profile.sdwan.transport import ManagementVpn
|
|
50
|
+
from catalystwan.models.configuration.feature_profile.sdwan.transport import ManagementVpn, T1E1ControllerParcel
|
|
51
51
|
|
|
52
52
|
system_endpoint_mapping = {
|
|
53
53
|
AAAParcel: "aaa",
|
|
@@ -242,6 +242,7 @@ class TestServiceFeatureProfileAPI(unittest.TestCase):
|
|
|
242
242
|
|
|
243
243
|
transport_enpoint_mapping = {
|
|
244
244
|
ManagementVpn: "management/vpn",
|
|
245
|
+
T1E1ControllerParcel: "t1-e1-controller",
|
|
245
246
|
}
|
|
246
247
|
|
|
247
248
|
|
|
@@ -28,7 +28,7 @@ class VersionedFieldsModel(BaseModel):
|
|
|
28
28
|
|
|
29
29
|
@model_serializer(mode="wrap")
|
|
30
30
|
def dump(self, handler: SerializerFunctionWrapHandler, info: SerializationInfo) -> Dict[str, Any]:
|
|
31
|
-
return VersionedField.
|
|
31
|
+
return VersionedField.dump(self.model_fields, handler(self), info)
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class Payload(BaseModel):
|