catalystwan 0.30.0.dev0__tar.gz → 0.30.0.dev1__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.30.0.dev0 → catalystwan-0.30.0.dev1}/PKG-INFO +2 -4
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/README.md +1 -3
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/admin_tech_api.py +4 -4
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/mtt_aaa_api.py +2 -2
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/template_api.py +2 -2
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/README.md +3 -3
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/exceptions.py +21 -21
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/README.md +1 -1
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/response.py +4 -4
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/session.py +17 -22
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_alarms_api.py +10 -10
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_devices_api.py +13 -13
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_response.py +8 -8
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_templates.py +2 -2
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/vmanage_auth.py +2 -2
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/pyproject.toml +1 -1
- catalystwan-0.30.0.dev1/setup.py +80 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/LICENSE +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/administration.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/alarms_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/api_container.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/basic_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/config_device_inventory_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/config_group_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/configuration_groups/parcel.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/configuration_groups/parcels/aaa_parcel.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/configuration_groups/parcels/cellular_controller.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/dashboard_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/device_action_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/feature_profile_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/logs_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/monitoring_status_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/omp_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/packet_capture_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/parcel_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/partition_manager_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/policy_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/resource_pool_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/software_action_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/speedtest_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/task_status_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/cli_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/device_template/device_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/device_template/device_template_payload.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/device_variable.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/feature_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/feature_template_field.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/feature_template_payload.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_aaa_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_banner_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_bfd_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_bgp_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_logging_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_ntp_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_omp_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_ospf.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_ospfv3.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_snmp_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_system.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cisco_vpn_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/cli_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/omp_vsmart_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/security_vsmart_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/supported.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/models/system_vsmart_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/tenant_backup_restore_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/tenant_management_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/tenant_migration_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/api/versions_utils.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/dataclasses.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/administration_user_and_group.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/certificate_management_device.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/certificate_management_vmanage.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/client.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/cluster_management.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/device/software_update.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/disaster_recovery.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/control.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/app.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/as_path.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/class_map.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/color.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/community.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/local_app.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/mirror.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/policer.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/port.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/prefix.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/region.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/site.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/sla.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/tloc.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/url_black_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/url_white_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/vpn.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/list/zone.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/security_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/vedge_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration/software_actions.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_dashboard_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_device_actions.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_device_inventory.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_device_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_feature_profile.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_group.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/configuration_settings.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/endpoints_container.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/misc.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/monitoring_device_details.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/monitoring_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/sdavc_cloud_connector.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/tenant_backup_restore.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/tenant_management.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/tenant_migration.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/logging.conf +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/common.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/common.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/builder.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/common.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/ospf.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/ospfv3.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/configuration/profile_type.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/device_inventory.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/feature_profile_parcel.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/misc/application_protocols.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/centralized.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/access_control_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/access_control_list_ipv6.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/control.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/device_access.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/device_access_ipv6.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/hub_and_spoke.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/mesh.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/qos_map.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/rewrite.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/rule_set.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/security_group.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/traffic_data.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/vpn_membership.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/definitions/zone_based_firewall.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/lists.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/lists_entries.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/localized.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/policy.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/policy_definition.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/policy_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/policy/security.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/profileparcel/traffic_policy.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/models/tenant.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/Basic_Cisco_VPN_Model.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/banner_1.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/alias.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/basic.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/children.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/children_nested.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/basic/data_path.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/cisco_bfd.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/complex_aaa.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/complex_cisco_vpn.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/default_cisco_system.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/iuo.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/omp_1.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/omp_2.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/definitions/omp_3.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/cisco_aaa.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/cisco_banner.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/cisco_bfd.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/cisco_system.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/cisco_vpn.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/models/omp_vsmart.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/alias.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/basic.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/children.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/children_nested.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/basic/data_path.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/cedge_aaa.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/cisco_banner.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/cisco_bfd.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/cisco_system.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/cisco_vpn.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/schemas/omp-vsmart.json +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/test_chose_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/test_deserialize_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/test_generate_payload.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/templates/test_serialize_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_admin_tech_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_administration.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_cli_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_creation_tools.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_device_action_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_endpoints.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_feature_template_field.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_logs_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_monitoring_status_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_mtt_aaa_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_omp_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_packet_capture.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_partition_manager_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_session.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_software_action_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_speed_test_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_task_status_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_tenant_backup_restore_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_tenant_management_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_tenant_migration_api.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_typed_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_version.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_version_utils.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/tests/test_vmanage_auth.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/typed_list.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/__init__.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/alarm_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/certificate_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/colors.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/config_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/creation_tools.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/dashboard.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/device_model.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/dict.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/feature_template.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/operation_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/personality.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/pydantic_validators.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/reachability.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/session_type.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/template_type.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/timezone.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/upgrades_helper.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/utils/validate_status.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/version.py +0 -0
- {catalystwan-0.30.0.dev0 → catalystwan-0.30.0.dev1}/catalystwan/workflows/tenant_migration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: catalystwan
|
|
3
|
-
Version: 0.30.0.
|
|
3
|
+
Version: 0.30.0.dev1
|
|
4
4
|
Summary: Cisco Catalyst SD-WAN SDK for Python
|
|
5
5
|
Home-page: https://github.com/CiscoDevNet/catalystwan
|
|
6
6
|
Author: kagorski
|
|
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
|
|
|
31
31
|
|
|
32
32
|
[](https://www.python.org/)
|
|
33
33
|
|
|
34
|
-
Cisco Catalyst
|
|
34
|
+
Cisco Catalyst WAN SDK is a package for creating simple and parallel automatic requests via official Manager API. It is intended to serve as a multiple session handler (provider, provider as a tenant, tenant). The library is not dependent on environment which is being run in, you just need a connection to any Manager.
|
|
35
35
|
|
|
36
36
|
## Installation
|
|
37
37
|
```console
|
|
@@ -361,8 +361,6 @@ except vManageBadRequestError as error:
|
|
|
361
361
|
# code = 'USER0006'
|
|
362
362
|
```
|
|
363
363
|
|
|
364
|
-

|
|
365
|
-
|
|
366
364
|
## [Supported API endpoints](https://github.com/CiscoDevNet/catalystwan/blob/main/ENDPOINTS.md)
|
|
367
365
|
|
|
368
366
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.python.org/)
|
|
6
6
|
|
|
7
|
-
Cisco Catalyst
|
|
7
|
+
Cisco Catalyst WAN SDK is a package for creating simple and parallel automatic requests via official Manager API. It is intended to serve as a multiple session handler (provider, provider as a tenant, tenant). The library is not dependent on environment which is being run in, you just need a connection to any Manager.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
```console
|
|
@@ -334,8 +334,6 @@ except vManageBadRequestError as error:
|
|
|
334
334
|
# code = 'USER0006'
|
|
335
335
|
```
|
|
336
336
|
|
|
337
|
-

|
|
338
|
-
|
|
339
337
|
## [Supported API endpoints](https://github.com/CiscoDevNet/catalystwan/blob/main/ENDPOINTS.md)
|
|
340
338
|
|
|
341
339
|
|
|
@@ -12,7 +12,7 @@ from requests import Response
|
|
|
12
12
|
from requests.exceptions import HTTPError
|
|
13
13
|
|
|
14
14
|
from catalystwan.dataclasses import AdminTech, DeviceAdminTech
|
|
15
|
-
from catalystwan.exceptions import
|
|
15
|
+
from catalystwan.exceptions import ManagerError
|
|
16
16
|
from catalystwan.utils.creation_tools import create_dataclass
|
|
17
17
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
@@ -21,15 +21,15 @@ if TYPE_CHECKING:
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
class GenerateAdminTechLogError(
|
|
24
|
+
class GenerateAdminTechLogError(ManagerError):
|
|
25
25
|
pass
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class DownloadAdminTechLogError(
|
|
28
|
+
class DownloadAdminTechLogError(ManagerError):
|
|
29
29
|
pass
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
class RequestTokenIdNotFound(
|
|
32
|
+
class RequestTokenIdNotFound(ManagerError):
|
|
33
33
|
pass
|
|
34
34
|
|
|
35
35
|
|
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
from typing import TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from catalystwan.dataclasses import TenantAAA, TenantRadiusServer, TenantTacacsServer
|
|
7
|
-
from catalystwan.exceptions import
|
|
7
|
+
from catalystwan.exceptions import ManagerError
|
|
8
8
|
from catalystwan.utils.creation_tools import asdict, create_dataclass
|
|
9
9
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
|
|
|
13
13
|
logger = logging.getLogger(__name__)
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class AAAConfigNotPresent(
|
|
16
|
+
class AAAConfigNotPresent(ManagerError):
|
|
17
17
|
pass
|
|
18
18
|
|
|
19
19
|
|
|
@@ -38,7 +38,7 @@ from catalystwan.api.templates.models.system_vsmart_model import SystemVsmart
|
|
|
38
38
|
from catalystwan.dataclasses import Device, DeviceTemplateInfo, FeatureTemplateInfo, FeatureTemplatesTypes, TemplateInfo
|
|
39
39
|
from catalystwan.endpoints.configuration_device_template import FeatureToCLIPayload
|
|
40
40
|
from catalystwan.exceptions import AttachedError, TemplateNotFoundError
|
|
41
|
-
from catalystwan.response import
|
|
41
|
+
from catalystwan.response import ManagerResponse
|
|
42
42
|
from catalystwan.typed_list import DataSequence
|
|
43
43
|
from catalystwan.utils.device_model import DeviceModel
|
|
44
44
|
from catalystwan.utils.dict import merge
|
|
@@ -377,7 +377,7 @@ class TemplatesAPI:
|
|
|
377
377
|
def _edit_device_template(self, template: DeviceTemplate):
|
|
378
378
|
self._create_device_template(template, True)
|
|
379
379
|
|
|
380
|
-
def _edit_feature_template(self, template: FeatureTemplate, data: FeatureTemplateInfo) ->
|
|
380
|
+
def _edit_feature_template(self, template: FeatureTemplate, data: FeatureTemplateInfo) -> ManagerResponse:
|
|
381
381
|
if self.is_created_by_generator(template):
|
|
382
382
|
debug = False
|
|
383
383
|
schema = self.get_feature_template_schema(template, debug)
|
|
@@ -13,12 +13,12 @@ omp_vsmart = OMPvSmart(
|
|
|
13
13
|
session.api.templates.create(omp_vsmart)
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
## Add new Feature Template in Cisco Catalyst
|
|
16
|
+
## Add new Feature Template in Cisco Catalyst WAN SDK
|
|
17
17
|
These steps will help you to automate feature template creation. We'll explain what to do and why, so everyone will have deep understanding how our templates work. In the example we will try to create `OMP` Feature Template for vSmart.
|
|
18
18
|
|
|
19
19
|
1. Get your template type name and version.
|
|
20
20
|
>Note: display name is not template type name!
|
|
21
|
-
- For example, you could extract it from response body. Go to your
|
|
21
|
+
- For example, you could extract it from response body. Go to your Manager and create any template which you would like to automate in catalystwan. Send template creation request and check for `templateType` and `templateMinVersion` variable names. `OMP` (display name) for vSmart has `omp-vsmart` template type name.
|
|
22
22
|
|
|
23
23
|
2. With corresponding `templateType` we are able to create new class which implements `FeatureTemplate` interface. Create new file in `catalystwan\api\templates\models\` and copy-paste the code and change name of the class with its type attribute.
|
|
24
24
|
|
|
@@ -65,7 +65,7 @@ These steps will help you to automate feature template creation. We'll explain w
|
|
|
65
65
|
|
|
66
66
|
`Template my_first_template (FeatureTemplate) was created successfully (7e56acdd-640e-45dc-9335-87abc697995f).`
|
|
67
67
|
|
|
68
|
-
6. We can check whether our template is created sucessfully in
|
|
68
|
+
6. We can check whether our template is created sucessfully in Manager manually. If there is an error, please create an issue with error and try go to the 7th step.
|
|
69
69
|
|
|
70
70
|
### Custimize Feature Template fields.
|
|
71
71
|
7. Run below code with already created session and changed corresponding variables.
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
class
|
|
1
|
+
class ManagerError(Exception):
|
|
2
2
|
"""Superclass of all catalystwan exception types."""
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
class InvalidOperationError(
|
|
5
|
+
class InvalidOperationError(ManagerError):
|
|
6
6
|
"""The exception that is thrown when a method call is invalid for the object's current state."""
|
|
7
7
|
|
|
8
8
|
pass
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class RetrieveIntervalOutOfRange(
|
|
11
|
+
class RetrieveIntervalOutOfRange(ManagerError):
|
|
12
12
|
pass
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class VersionDeclarationError(
|
|
15
|
+
class VersionDeclarationError(ManagerError):
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
The exception that is thrown in one of two below cases.
|
|
@@ -23,107 +23,107 @@ class VersionDeclarationError(vManageClientError):
|
|
|
23
23
|
pass
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
class ImageNotInRepositoryError(
|
|
26
|
+
class ImageNotInRepositoryError(ManagerError):
|
|
27
27
|
"""The exception that is thrown, if image is not in vManage images Repository"""
|
|
28
28
|
|
|
29
29
|
pass
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
class TemplateNotFoundError(
|
|
32
|
+
class TemplateNotFoundError(ManagerError):
|
|
33
33
|
"""Used when a template item is not found."""
|
|
34
34
|
|
|
35
35
|
def __init__(self, template):
|
|
36
36
|
self.message = f"No such template: '{template}'"
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
class AttachedError(
|
|
39
|
+
class AttachedError(ManagerError):
|
|
40
40
|
"""Used when delete attached template."""
|
|
41
41
|
|
|
42
42
|
def __init__(self, template):
|
|
43
43
|
self.message = f"Template: {template} is attached to device."
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
class TemplateTypeError(
|
|
46
|
+
class TemplateTypeError(ManagerError):
|
|
47
47
|
"""Used when wrong type template."""
|
|
48
48
|
|
|
49
49
|
def __init__(self, name):
|
|
50
50
|
self.message = f"Template: {name} - wrong template type."
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
class AlreadyExistsError(
|
|
53
|
+
class AlreadyExistsError(ManagerError):
|
|
54
54
|
"""Raised when an entity that we attempted to create already exists."""
|
|
55
55
|
|
|
56
56
|
pass
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
class APIVersionError(
|
|
59
|
+
class APIVersionError(ManagerError):
|
|
60
60
|
"""Raised when API is unsupported in running vManage version."""
|
|
61
61
|
|
|
62
62
|
def __init__(self, item, supported, current):
|
|
63
63
|
self.message = f"vManage is running: {current} but {item} only supported in API version: {supported}"
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
class APIViewError(
|
|
66
|
+
class APIViewError(ManagerError):
|
|
67
67
|
"""Raised when API is not allowed for given session type / view."""
|
|
68
68
|
|
|
69
69
|
def __init__(self, item, allowed, current):
|
|
70
70
|
self.message = f"Current view is: {current} but {item} only allowed for views: {allowed}"
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
class APIRequestPayloadTypeError(
|
|
73
|
+
class APIRequestPayloadTypeError(ManagerError):
|
|
74
74
|
"""Raised when unsupported payload type is passed to vManage request."""
|
|
75
75
|
|
|
76
76
|
def __init__(self, item):
|
|
77
77
|
self.message = f"Unsupported payload type: {type(item)} for vManage request"
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
class EmptyTaskResponseError(
|
|
80
|
+
class EmptyTaskResponseError(ManagerError):
|
|
81
81
|
"""Raised if task is registred by vManage, but reponse content is empty"""
|
|
82
82
|
|
|
83
83
|
pass
|
|
84
84
|
|
|
85
85
|
|
|
86
|
-
class TaskNotRegisteredError(
|
|
86
|
+
class TaskNotRegisteredError(ManagerError):
|
|
87
87
|
"""Raised if task_id is generated, but it's not registere in vManage"""
|
|
88
88
|
|
|
89
89
|
pass
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
class TaskValidationError(
|
|
92
|
+
class TaskValidationError(ManagerError):
|
|
93
93
|
"""Raised if task has not been validated"""
|
|
94
94
|
|
|
95
95
|
pass
|
|
96
96
|
|
|
97
97
|
|
|
98
|
-
class MultiplePersonalityError(
|
|
98
|
+
class MultiplePersonalityError(ManagerError):
|
|
99
99
|
"""Raised if Device DataSequnce contains devices with multiples personalities"""
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
class SessionNotCreatedError(
|
|
102
|
+
class SessionNotCreatedError(ManagerError):
|
|
103
103
|
"""Raised when vManage session cannot be created"""
|
|
104
104
|
|
|
105
105
|
pass
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
class TenantSubdomainNotFound(
|
|
108
|
+
class TenantSubdomainNotFound(ManagerError):
|
|
109
109
|
"""Raised when given subdomain does not exist"""
|
|
110
110
|
|
|
111
111
|
pass
|
|
112
112
|
|
|
113
113
|
|
|
114
|
-
class APIEndpointError(
|
|
114
|
+
class APIEndpointError(Exception):
|
|
115
115
|
"""Raised when there is a problem with endpoint definition"""
|
|
116
116
|
|
|
117
117
|
pass
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
class TenantMigrationExportFileNotFound(
|
|
120
|
+
class TenantMigrationExportFileNotFound(ManagerError):
|
|
121
121
|
"""Raised when client cannot find exported file name in export task result"""
|
|
122
122
|
|
|
123
123
|
pass
|
|
124
124
|
|
|
125
125
|
|
|
126
|
-
class TenantMigrationPreconditionsError(
|
|
126
|
+
class TenantMigrationPreconditionsError(ManagerError):
|
|
127
127
|
"""Raised when preconditions for tenant migration fail"""
|
|
128
128
|
|
|
129
129
|
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Configuration Group - Creation of First and Second Layer
|
|
2
2
|
|
|
3
|
-
This README document provides guidelines on creating configuration groups within the `Cisco Catalyst
|
|
3
|
+
This README document provides guidelines on creating configuration groups within the `Cisco Catalyst WAN SDK` repository.
|
|
4
4
|
|
|
5
5
|
## Guidelines for Creating Config Groups
|
|
6
6
|
|
|
@@ -133,7 +133,7 @@ class JsonPayload:
|
|
|
133
133
|
self.headers = json.get("headers", None)
|
|
134
134
|
|
|
135
135
|
|
|
136
|
-
class
|
|
136
|
+
class ManagerResponse(Response, APIEndpointClientResponse):
|
|
137
137
|
"""Extends Response object with methods specific to vManage.
|
|
138
138
|
Object is meant to be created from aready received requests.Response"""
|
|
139
139
|
|
|
@@ -225,9 +225,9 @@ class vManageResponse(Response, APIEndpointClientResponse):
|
|
|
225
225
|
return ErrorInfo(**self.payload.error)
|
|
226
226
|
|
|
227
227
|
|
|
228
|
-
def with_vmanage_response(method: Callable[[Any], Response]) -> Callable[[Any],
|
|
228
|
+
def with_vmanage_response(method: Callable[[Any], Response]) -> Callable[[Any], ManagerResponse]:
|
|
229
229
|
@wraps(method)
|
|
230
|
-
def wrapper(*args, **kwargs) ->
|
|
231
|
-
return
|
|
230
|
+
def wrapper(*args, **kwargs) -> ManagerResponse:
|
|
231
|
+
return ManagerResponse(method(*args, **kwargs))
|
|
232
232
|
|
|
233
233
|
return wrapper
|
|
@@ -18,14 +18,9 @@ from catalystwan.api.api_container import APIContainer
|
|
|
18
18
|
from catalystwan.endpoints import APIEndpointClient
|
|
19
19
|
from catalystwan.endpoints.client import AboutInfo, ServerInfo
|
|
20
20
|
from catalystwan.endpoints.endpoints_container import APIEndpointContainter
|
|
21
|
-
from catalystwan.exceptions import
|
|
22
|
-
InvalidOperationError,
|
|
23
|
-
SessionNotCreatedError,
|
|
24
|
-
TenantSubdomainNotFound,
|
|
25
|
-
vManageClientError,
|
|
26
|
-
)
|
|
21
|
+
from catalystwan.exceptions import InvalidOperationError, ManagerError, SessionNotCreatedError, TenantSubdomainNotFound
|
|
27
22
|
from catalystwan.models.tenant import Tenant
|
|
28
|
-
from catalystwan.response import ErrorInfo,
|
|
23
|
+
from catalystwan.response import ErrorInfo, ManagerResponse, response_history_debug
|
|
29
24
|
from catalystwan.utils.session_type import SessionType
|
|
30
25
|
from catalystwan.version import NullVersion, parse_api_version
|
|
31
26
|
from catalystwan.vmanage_auth import vManageAuth
|
|
@@ -34,10 +29,10 @@ JSON = Union[Dict[str, "JSON"], List["JSON"], str, int, float, bool, None]
|
|
|
34
29
|
USER_AGENT = f"{__package__}/{metadata.version(__package__)}"
|
|
35
30
|
|
|
36
31
|
|
|
37
|
-
class vManageBadResponseError(
|
|
32
|
+
class vManageBadResponseError(ManagerError):
|
|
38
33
|
"""Indicates that vManage returned error HTTP status code other than 400."""
|
|
39
34
|
|
|
40
|
-
def __init__(self, error_info: Optional[ErrorInfo], response:
|
|
35
|
+
def __init__(self, error_info: Optional[ErrorInfo], response: ManagerResponse):
|
|
41
36
|
self.response = response
|
|
42
37
|
self.info = error_info
|
|
43
38
|
super().__init__(error_info)
|
|
@@ -149,20 +144,20 @@ def create_manager_session(
|
|
|
149
144
|
|
|
150
145
|
|
|
151
146
|
class vManageResponseAdapter(Session):
|
|
152
|
-
def request(self, method, url, *args, **kwargs) ->
|
|
153
|
-
return
|
|
147
|
+
def request(self, method, url, *args, **kwargs) -> ManagerResponse:
|
|
148
|
+
return ManagerResponse(super().request(method, url, *args, **kwargs))
|
|
154
149
|
|
|
155
|
-
def get(self, url, *args, **kwargs) ->
|
|
156
|
-
return
|
|
150
|
+
def get(self, url, *args, **kwargs) -> ManagerResponse:
|
|
151
|
+
return ManagerResponse(super().get(url, *args, **kwargs))
|
|
157
152
|
|
|
158
|
-
def post(self, url, *args, **kwargs) ->
|
|
159
|
-
return
|
|
153
|
+
def post(self, url, *args, **kwargs) -> ManagerResponse:
|
|
154
|
+
return ManagerResponse(super().post(url, *args, **kwargs))
|
|
160
155
|
|
|
161
|
-
def put(self, url, *args, **kwargs) ->
|
|
162
|
-
return
|
|
156
|
+
def put(self, url, *args, **kwargs) -> ManagerResponse:
|
|
157
|
+
return ManagerResponse(super().put(url, *args, **kwargs))
|
|
163
158
|
|
|
164
|
-
def delete(self, url, *args, **kwargs) ->
|
|
165
|
-
return
|
|
159
|
+
def delete(self, url, *args, **kwargs) -> ManagerResponse:
|
|
160
|
+
return ManagerResponse(super().delete(url, *args, **kwargs))
|
|
166
161
|
|
|
167
162
|
|
|
168
163
|
class ManagerSession(vManageResponseAdapter, APIEndpointClient):
|
|
@@ -215,7 +210,7 @@ class ManagerSession(vManageResponseAdapter, APIEndpointClient):
|
|
|
215
210
|
self._platform_version: str = ""
|
|
216
211
|
self._api_version: Version
|
|
217
212
|
|
|
218
|
-
def request(self, method, url, *args, **kwargs) ->
|
|
213
|
+
def request(self, method, url, *args, **kwargs) -> ManagerResponse:
|
|
219
214
|
full_url = self.get_full_url(url)
|
|
220
215
|
try:
|
|
221
216
|
response = super(ManagerSession, self).request(method, full_url, *args, **kwargs)
|
|
@@ -360,7 +355,7 @@ class ManagerSession(vManageResponseAdapter, APIEndpointClient):
|
|
|
360
355
|
response = self.post(url_path)
|
|
361
356
|
return response.json()["VSessionId"]
|
|
362
357
|
|
|
363
|
-
def logout(self) -> Optional[
|
|
358
|
+
def logout(self) -> Optional[ManagerResponse]:
|
|
364
359
|
if isinstance((version := self.api_version), NullVersion):
|
|
365
360
|
self.logger.warning("Cannot perform logout operation without known api_version.")
|
|
366
361
|
return None
|
|
@@ -386,7 +381,7 @@ class ManagerSession(vManageResponseAdapter, APIEndpointClient):
|
|
|
386
381
|
self.auth = auth
|
|
387
382
|
self.verify = verify
|
|
388
383
|
|
|
389
|
-
def __is_jsession_updated(self, response:
|
|
384
|
+
def __is_jsession_updated(self, response: ManagerResponse) -> bool:
|
|
390
385
|
if (jsessionid := response.cookies.get("JSESSIONID")) and isinstance(self.auth, vManageAuth):
|
|
391
386
|
if jsessionid != self.auth.set_cookie.get("JSESSIONID"):
|
|
392
387
|
return True
|
|
@@ -129,7 +129,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
129
129
|
self.minor_alarms_dataseq = DataSequence(AlarmData, [create_dataclass(AlarmData, flatten_dict(self.alarms[3]))])
|
|
130
130
|
self.maxDiff = None
|
|
131
131
|
|
|
132
|
-
@patch("catalystwan.response.
|
|
132
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
133
133
|
@patch("catalystwan.session.ManagerSession")
|
|
134
134
|
def test_get_alarms(self, mock_session, mock_response):
|
|
135
135
|
# Arrange
|
|
@@ -140,7 +140,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
140
140
|
# Assert
|
|
141
141
|
self.assertEqual(answer, self.alarms_dataseq)
|
|
142
142
|
|
|
143
|
-
@patch("catalystwan.response.
|
|
143
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
144
144
|
@patch("catalystwan.session.ManagerSession")
|
|
145
145
|
def test_get_critical_alarms(self, mock_session, mock_response):
|
|
146
146
|
# Arrange
|
|
@@ -151,7 +151,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
151
151
|
# Assert
|
|
152
152
|
self.assertEqual(answer, self.critical_alarms_dataseq)
|
|
153
153
|
|
|
154
|
-
@patch("catalystwan.response.
|
|
154
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
155
155
|
@patch("catalystwan.session.ManagerSession")
|
|
156
156
|
def test_get_major_alarms(self, mock_session, mock_response):
|
|
157
157
|
# Arrange
|
|
@@ -162,7 +162,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
162
162
|
# Assert
|
|
163
163
|
self.assertEqual(answer, self.major_alarms_dataseq)
|
|
164
164
|
|
|
165
|
-
@patch("catalystwan.response.
|
|
165
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
166
166
|
@patch("catalystwan.session.ManagerSession")
|
|
167
167
|
def test_get_medium_alarms(self, mock_session, mock_response):
|
|
168
168
|
# Arrange
|
|
@@ -173,7 +173,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
173
173
|
# Assert
|
|
174
174
|
self.assertEqual(answer, self.medium_alarms_dataseq)
|
|
175
175
|
|
|
176
|
-
@patch("catalystwan.response.
|
|
176
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
177
177
|
@patch("catalystwan.session.ManagerSession")
|
|
178
178
|
def test_get_minor_alarms(self, mock_session, mock_response):
|
|
179
179
|
# Arrange
|
|
@@ -184,7 +184,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
184
184
|
# Assert
|
|
185
185
|
self.assertEqual(answer, self.minor_alarms_dataseq)
|
|
186
186
|
|
|
187
|
-
@patch("catalystwan.response.
|
|
187
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
188
188
|
@patch("catalystwan.session.ManagerSession")
|
|
189
189
|
def test_get_not_viewed_alarms(self, mock_session, mock_response):
|
|
190
190
|
# Arrange
|
|
@@ -195,7 +195,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
195
195
|
# Assert
|
|
196
196
|
self.assertEqual(answer, self.alarms_dataseq)
|
|
197
197
|
|
|
198
|
-
@patch("catalystwan.response.
|
|
198
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
199
199
|
@patch("catalystwan.session.ManagerSession")
|
|
200
200
|
def test_check_alarms(self, mock_session, mock_response):
|
|
201
201
|
# Arrange
|
|
@@ -206,7 +206,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
206
206
|
# Assert
|
|
207
207
|
self.assertEqual(answer, {"found": set(self.minor_alarms_dataseq), "not-found": set()})
|
|
208
208
|
|
|
209
|
-
@patch("catalystwan.response.
|
|
209
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
210
210
|
@patch("catalystwan.session.ManagerSession")
|
|
211
211
|
def test_check_alarms_not_found(self, mock_session, mock_response):
|
|
212
212
|
# Arrange
|
|
@@ -218,7 +218,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
218
218
|
self.assertEqual(answer, {"found": set(), "not-found": set(self.minor_alarms_dataseq)})
|
|
219
219
|
|
|
220
220
|
# # # test AlarmVerification class
|
|
221
|
-
@patch("catalystwan.response.
|
|
221
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
222
222
|
@patch("catalystwan.session.ManagerSession")
|
|
223
223
|
def test_verify(self, mock_session, mock_response):
|
|
224
224
|
# Arrange
|
|
@@ -233,7 +233,7 @@ class TestAlarmsAPI(TestCase):
|
|
|
233
233
|
self.assertEqual(answer.found, set())
|
|
234
234
|
self.assertEqual(answer.not_found, set(self.minor_alarms_dataseq))
|
|
235
235
|
|
|
236
|
-
@patch("catalystwan.response.
|
|
236
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
237
237
|
@patch("catalystwan.session.ManagerSession")
|
|
238
238
|
def test_verify_not_found(self, mock_session, mock_response):
|
|
239
239
|
# Arrange
|
|
@@ -11,7 +11,7 @@ from catalystwan.endpoints.endpoints_container import APIEndpointContainter
|
|
|
11
11
|
from catalystwan.endpoints.monitoring_device_details import DeviceData
|
|
12
12
|
from catalystwan.endpoints.real_time_monitoring.reboot_history import RebootEntry
|
|
13
13
|
from catalystwan.exceptions import InvalidOperationError
|
|
14
|
-
from catalystwan.response import
|
|
14
|
+
from catalystwan.response import ManagerResponse
|
|
15
15
|
from catalystwan.typed_list import DataSequence
|
|
16
16
|
from catalystwan.utils.creation_tools import create_dataclass
|
|
17
17
|
from catalystwan.utils.personality import Personality
|
|
@@ -130,7 +130,7 @@ class TestDevicesAPI(TestCase):
|
|
|
130
130
|
# self.assertEqual(answer, self.controllers_dataclass)
|
|
131
131
|
pass # TODO fix after updating .filter()
|
|
132
132
|
|
|
133
|
-
@patch("catalystwan.response.
|
|
133
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
134
134
|
@patch("catalystwan.session.ManagerSession")
|
|
135
135
|
def test_orchestrators(self, mock_session, mock_response):
|
|
136
136
|
# Arrange
|
|
@@ -144,7 +144,7 @@ class TestDevicesAPI(TestCase):
|
|
|
144
144
|
# Assert
|
|
145
145
|
self.assertEqual(answer, self.orchestrators_dataseq)
|
|
146
146
|
|
|
147
|
-
@patch("catalystwan.response.
|
|
147
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
148
148
|
@patch("catalystwan.session.ManagerSession")
|
|
149
149
|
def test_edges(self, mock_session, mock_response):
|
|
150
150
|
# Arrange
|
|
@@ -158,7 +158,7 @@ class TestDevicesAPI(TestCase):
|
|
|
158
158
|
# Assert
|
|
159
159
|
self.assertEqual(answer, self.edges_dataseq)
|
|
160
160
|
|
|
161
|
-
@patch("catalystwan.response.
|
|
161
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
162
162
|
@patch("catalystwan.session.ManagerSession")
|
|
163
163
|
def test_vsmarts(self, mock_session, mock_response):
|
|
164
164
|
# Arrange
|
|
@@ -196,7 +196,7 @@ class TestDevicesAPI(TestCase):
|
|
|
196
196
|
# Assert
|
|
197
197
|
self.assertEqual(answer, self.ips_list)
|
|
198
198
|
|
|
199
|
-
@patch("catalystwan.response.
|
|
199
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
200
200
|
@patch("catalystwan.session.ManagerSession")
|
|
201
201
|
def test_get(self, mock_session, mock_response):
|
|
202
202
|
# Arrange
|
|
@@ -218,7 +218,7 @@ class TestDevicesAPI(TestCase):
|
|
|
218
218
|
["bc2a78ac-a06e-40fd-b2b7-1b1e062f3f9e", 3],
|
|
219
219
|
]
|
|
220
220
|
)
|
|
221
|
-
@patch("catalystwan.response.
|
|
221
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
222
222
|
@patch("catalystwan.session.ManagerSession")
|
|
223
223
|
def test_get_device_details(self, uuid, device_number, mock_session, mock_response):
|
|
224
224
|
# Arrange
|
|
@@ -249,7 +249,7 @@ class TestDevicesAPI(TestCase):
|
|
|
249
249
|
# Assert
|
|
250
250
|
self.assertEqual(answer, devices_number)
|
|
251
251
|
|
|
252
|
-
@patch("catalystwan.response.
|
|
252
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
253
253
|
@patch("catalystwan.session.ManagerSession")
|
|
254
254
|
def test_get_reachable_devices_vsmarts(self, mock_session, mock_response):
|
|
255
255
|
# Arrange
|
|
@@ -263,7 +263,7 @@ class TestDevicesAPI(TestCase):
|
|
|
263
263
|
# Assert
|
|
264
264
|
self.assertEqual(answer, self.vsmarts_dataseq)
|
|
265
265
|
|
|
266
|
-
@patch("catalystwan.response.
|
|
266
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
267
267
|
@patch("catalystwan.session.ManagerSession")
|
|
268
268
|
def test_get_reachable_devices_vbonds(self, mock_session, mock_response):
|
|
269
269
|
# Arrange
|
|
@@ -277,7 +277,7 @@ class TestDevicesAPI(TestCase):
|
|
|
277
277
|
# Assert
|
|
278
278
|
self.assertEqual(answer, self.vbonds_dataseq)
|
|
279
279
|
|
|
280
|
-
@patch("catalystwan.response.
|
|
280
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
281
281
|
@patch("catalystwan.session.ManagerSession")
|
|
282
282
|
def test_get_reachable_devices_vedgess(self, mock_session, mock_response):
|
|
283
283
|
# Arrange
|
|
@@ -329,7 +329,7 @@ class TestDevicesAPI(TestCase):
|
|
|
329
329
|
self.assertRaises(InvalidOperationError, answer)
|
|
330
330
|
|
|
331
331
|
@parameterized.expand([["vm200", 0], ["vm129", 1], ["vm128", 2], ["vm1", 3]])
|
|
332
|
-
@patch("catalystwan.response.
|
|
332
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
333
333
|
@patch("catalystwan.session.ManagerSession")
|
|
334
334
|
def test_get_by_hostname(self, hostname, device_number, mock_session, mock_response):
|
|
335
335
|
# Arrange
|
|
@@ -344,7 +344,7 @@ class TestDevicesAPI(TestCase):
|
|
|
344
344
|
self.assertEqual(answer, DataSequence(Device, [create_dataclass(Device, self.devices[device_number])]))
|
|
345
345
|
|
|
346
346
|
@parameterized.expand([["1.1.1.1", 0], ["1.1.1.3", 1], ["1.1.1.2", 2], ["169.254.10.10", 3]])
|
|
347
|
-
@patch("catalystwan.response.
|
|
347
|
+
@patch("catalystwan.response.ManagerResponse")
|
|
348
348
|
@patch("catalystwan.session.ManagerSession")
|
|
349
349
|
def test_get_by_id(self, device_id, device_number, mock_session, mock_response):
|
|
350
350
|
# Arrange
|
|
@@ -578,7 +578,7 @@ class TestDevicesStateAPI(TestCase):
|
|
|
578
578
|
def test_get_device_reboot_history(self, mock_session):
|
|
579
579
|
# Arrange
|
|
580
580
|
mock_session.endpoints = APIEndpointContainter(mock_session)
|
|
581
|
-
mock_session.request.return_value =
|
|
581
|
+
mock_session.request.return_value = ManagerResponse(ResponseMock({"data": self.reboot_history}))
|
|
582
582
|
# Act
|
|
583
583
|
answer = DeviceStateAPI(mock_session).get_device_reboot_history(device_id="1.1.1.11")
|
|
584
584
|
# Assert
|
|
@@ -588,7 +588,7 @@ class TestDevicesStateAPI(TestCase):
|
|
|
588
588
|
def test_get_device_reboot_history_empty(self, mock_session):
|
|
589
589
|
# Arrange
|
|
590
590
|
mock_session.endpoints = APIEndpointContainter(mock_session)
|
|
591
|
-
mock_session.request.return_value =
|
|
591
|
+
mock_session.request.return_value = ManagerResponse(ResponseMock({"data": []}))
|
|
592
592
|
# Act
|
|
593
593
|
answer = DeviceStateAPI(mock_session).get_device_reboot_history(device_id="1.1.1.1")
|
|
594
594
|
# Assert
|