catalystwan 0.34.0.dev3__tar.gz → 0.34.0.dev4__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.
Files changed (571) hide show
  1. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/PKG-INFO +24 -2
  2. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/README.md +23 -1
  3. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/administration.py +3 -3
  4. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/tenant_management_api.py +2 -4
  5. catalystwan-0.34.0.dev4/catalystwan/apigw_auth.py +81 -0
  6. catalystwan-0.34.0.dev4/catalystwan/endpoints/api_gateway.py +23 -0
  7. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/base.py +0 -1
  8. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/response.py +5 -0
  9. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/session.py +120 -102
  10. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_administration.py +3 -2
  11. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_devices_api.py +1 -24
  12. catalystwan-0.34.0.dev4/catalystwan/tests/test_session.py +102 -0
  13. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_tenant_management_api.py +1 -2
  14. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_vmanage_auth.py +24 -31
  15. catalystwan-0.34.0.dev4/catalystwan/vmanage_auth.py +139 -0
  16. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/workflows/tenant_migration.py +5 -9
  17. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/pyproject.toml +1 -1
  18. catalystwan-0.34.0.dev4/setup.py +106 -0
  19. catalystwan-0.34.0.dev3/catalystwan/tests/test_session.py +0 -163
  20. catalystwan-0.34.0.dev3/catalystwan/vmanage_auth.py +0 -143
  21. catalystwan-0.34.0.dev3/setup.py +0 -106
  22. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/LICENSE +0 -0
  23. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/__init__.py +0 -0
  24. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/abstractions.py +0 -0
  25. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/__init__.py +0 -0
  26. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/admin_tech_api.py +0 -0
  27. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/alarms_api.py +0 -0
  28. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/api_container.py +0 -0
  29. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/basic_api.py +0 -0
  30. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/__init__.py +0 -0
  31. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  32. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/application_priority.py +0 -0
  33. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/builder_factory.py +0 -0
  34. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/cli.py +0 -0
  35. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/other.py +0 -0
  36. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/report.py +0 -0
  37. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/service.py +0 -0
  38. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/system.py +0 -0
  39. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/builders/feature_profiles/transport.py +0 -0
  40. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/config_device_inventory_api.py +0 -0
  41. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/config_group_api.py +0 -0
  42. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/configuration_groups/parcel.py +0 -0
  43. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/dashboard_api.py +0 -0
  44. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/device_action_api.py +0 -0
  45. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/feature_profile_api.py +0 -0
  46. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/logs_api.py +0 -0
  47. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/monitoring_status_api.py +0 -0
  48. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/mtt_aaa_api.py +0 -0
  49. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/omp_api.py +0 -0
  50. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/packet_capture_api.py +0 -0
  51. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/parcel_api.py +0 -0
  52. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/partition_manager_api.py +0 -0
  53. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/policy_api.py +0 -0
  54. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/resource_pool_api.py +0 -0
  55. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/software_action_api.py +0 -0
  56. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/speedtest_api.py +0 -0
  57. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/task_status_api.py +0 -0
  58. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/template_api.py +0 -0
  59. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/README.md +0 -0
  60. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/bool_str.py +0 -0
  61. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/cli_template.py +0 -0
  62. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/device_template/device_template.py +0 -0
  63. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/device_variable.py +0 -0
  64. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/feature_template.py +0 -0
  65. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/feature_template_field.py +0 -0
  66. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/feature_template_payload.py +0 -0
  67. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/aaa_model.py +0 -0
  68. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_aaa_model.py +0 -0
  69. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_banner_model.py +0 -0
  70. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_bfd_model.py +0 -0
  71. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_bgp_model.py +0 -0
  72. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_logging_model.py +0 -0
  73. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_ntp_model.py +0 -0
  74. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_omp_model.py +0 -0
  75. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_ospf.py +0 -0
  76. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_ospfv3.py +0 -0
  77. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_secure_internet_gateway.py +0 -0
  78. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_snmp_model.py +0 -0
  79. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_system.py +0 -0
  80. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_vpn_interface_model.py +0 -0
  81. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cisco_vpn_model.py +0 -0
  82. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/cli_template.py +0 -0
  83. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/omp_vsmart_model.py +0 -0
  84. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/security_vsmart_model.py +0 -0
  85. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/supported.py +0 -0
  86. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/system_vsmart_model.py +0 -0
  87. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -0
  88. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/models/vpn_vsmart_model.py +0 -0
  89. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/aaa_model.py +0 -0
  90. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/feature/aaa.json.j2 +0 -0
  91. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/feature/accounting.json.j2 +0 -0
  92. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/feature/radius.json.j2 +0 -0
  93. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/feature/tacacs.json.j2 +0 -0
  94. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/aaa/feature/user.json.j2 +0 -0
  95. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/cisco_vpn_model.py +0 -0
  96. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/feature/cisco_vpn.json.j2 +0 -0
  97. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/feature/dns.json.j2 +0 -0
  98. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv4route.json.j2 +0 -0
  99. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/feature/ipv6route.json.j2 +0 -0
  100. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/cisco_vpn/feature/mapping.json.j2 +0 -0
  101. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/tenant/tenant.json.j2 +0 -0
  102. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/templates/payloads/tenant/tenant_model.py +0 -0
  103. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/tenant_backup_restore_api.py +0 -0
  104. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/tenant_migration_api.py +0 -0
  105. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/versions_utils.py +0 -0
  106. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/api/virtual_image_action_api.py +0 -0
  107. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/dataclasses.py +0 -0
  108. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/__init__.py +0 -0
  109. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/administration_user_and_group.py +0 -0
  110. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/certificate_management_device.py +0 -0
  111. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/certificate_management_vmanage.py +0 -0
  112. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/client.py +0 -0
  113. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/cluster_management.py +0 -0
  114. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/device/software_update.py +0 -0
  115. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/disaster_recovery.py +0 -0
  116. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -0
  117. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -0
  118. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -0
  119. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -0
  120. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -0
  121. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +0 -0
  122. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -0
  123. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -0
  124. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +0 -0
  125. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -0
  126. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +0 -0
  127. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/network_hierarchy.py +0 -0
  128. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/abstractions.py +0 -0
  129. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/access_control_list.py +0 -0
  130. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +0 -0
  131. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/aip.py +0 -0
  132. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/amp.py +0 -0
  133. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -0
  134. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/control.py +0 -0
  135. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/device_access.py +0 -0
  136. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +0 -0
  137. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -0
  138. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +0 -0
  139. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -0
  140. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/mesh.py +0 -0
  141. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/qos_map.py +0 -0
  142. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/rewrite.py +0 -0
  143. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -0
  144. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/rule_set.py +0 -0
  145. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/security_group.py +0 -0
  146. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -0
  147. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -0
  148. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/traffic_data.py +0 -0
  149. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -0
  150. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +0 -0
  151. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +0 -0
  152. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/app.py +0 -0
  153. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/app_probe.py +0 -0
  154. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/as_path.py +0 -0
  155. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/class_map.py +0 -0
  156. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/color.py +0 -0
  157. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/community.py +0 -0
  158. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +0 -0
  159. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/data_prefix.py +0 -0
  160. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/expanded_community.py +0 -0
  161. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -0
  162. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/fqdn.py +0 -0
  163. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/geo_location.py +0 -0
  164. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/identity.py +0 -0
  165. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/ips_signature.py +0 -0
  166. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +0 -0
  167. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/local_app.py +0 -0
  168. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/local_domain.py +0 -0
  169. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/mirror.py +0 -0
  170. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/policer.py +0 -0
  171. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/port.py +0 -0
  172. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +0 -0
  173. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/prefix.py +0 -0
  174. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/protocol_name.py +0 -0
  175. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/region.py +0 -0
  176. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -0
  177. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/site.py +0 -0
  178. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/sla.py +0 -0
  179. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -0
  180. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/tloc.py +0 -0
  181. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -0
  182. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -0
  183. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/url_allow_list.py +0 -0
  184. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/url_block_list.py +0 -0
  185. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/vpn.py +0 -0
  186. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/list/zone.py +0 -0
  187. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/security_template.py +0 -0
  188. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/vedge_template.py +0 -0
  189. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy/vsmart_template.py +0 -0
  190. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/policy_group.py +0 -0
  191. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/software_actions.py +0 -0
  192. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration/topology_group.py +0 -0
  193. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_dashboard_status.py +0 -0
  194. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_device_actions.py +0 -0
  195. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_device_inventory.py +0 -0
  196. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_device_template.py +0 -0
  197. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_feature_profile.py +0 -0
  198. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_general_template.py +0 -0
  199. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_group.py +0 -0
  200. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_settings.py +0 -0
  201. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/configuration_template_master.py +0 -0
  202. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/endpoints_container.py +0 -0
  203. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/misc.py +0 -0
  204. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/monitoring/device_details.py +0 -0
  205. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/monitoring/security_policy.py +0 -0
  206. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/monitoring/server_info.py +0 -0
  207. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/monitoring/status.py +0 -0
  208. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/real_time_monitoring/reboot_history.py +0 -0
  209. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/sdavc_cloud_connector.py +0 -0
  210. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/tenant_backup_restore.py +0 -0
  211. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/tenant_management.py +0 -0
  212. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/tenant_migration.py +0 -0
  213. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py +0 -0
  214. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/endpoints/url_monitoring.py +0 -0
  215. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/exceptions.py +0 -0
  216. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/__init__.py +0 -0
  217. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  218. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  219. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -0
  220. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -0
  221. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -0
  222. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -0
  223. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -0
  224. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -0
  225. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -0
  226. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -0
  227. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -0
  228. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -0
  229. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -0
  230. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -0
  231. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -0
  232. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  233. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -0
  234. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -0
  235. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/test_data/__init__.py +0 -0
  236. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/test_find_template_values.py +0 -0
  237. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/test_network_hierarchy.py +0 -0
  238. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/integration_tests/test_settings.py +0 -0
  239. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/logging.conf +0 -0
  240. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/common.py +0 -0
  241. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/common.py +0 -0
  242. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/config_migration.py +0 -0
  243. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/README.md +0 -0
  244. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/builder.py +0 -0
  245. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/common.py +0 -0
  246. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/parcel.py +0 -0
  247. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -0
  248. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -0
  249. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -0
  250. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -0
  251. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -0
  252. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -0
  253. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -0
  254. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -0
  255. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -0
  256. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -0
  257. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -0
  258. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -0
  259. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -0
  260. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -0
  261. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -0
  262. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -0
  263. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -0
  264. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +0 -0
  265. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +0 -0
  266. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +0 -0
  267. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -0
  268. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +0 -0
  269. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +0 -0
  270. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +0 -0
  271. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -0
  272. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +0 -0
  273. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +0 -0
  274. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +0 -0
  275. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -0
  276. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/policer.py +0 -0
  277. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +0 -0
  278. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +0 -0
  279. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +0 -0
  280. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +0 -0
  281. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +0 -0
  282. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -0
  283. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -0
  284. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +0 -0
  285. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +0 -0
  286. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +0 -0
  287. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +0 -0
  288. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -0
  289. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -0
  290. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +0 -0
  291. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +0 -0
  292. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +0 -0
  293. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -0
  294. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +0 -0
  295. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -0
  296. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -0
  297. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +0 -0
  298. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -0
  299. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +0 -0
  300. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -0
  301. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -0
  302. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/routing/ospf.py +0 -0
  303. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/routing/ospfv3.py +0 -0
  304. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -0
  305. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +0 -0
  306. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +0 -0
  307. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +0 -0
  308. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +0 -0
  309. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +0 -0
  310. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +0 -0
  311. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +0 -0
  312. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -0
  313. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +0 -0
  314. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +0 -0
  315. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +0 -0
  316. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +0 -0
  317. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +0 -0
  318. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +0 -0
  319. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +0 -0
  320. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +0 -0
  321. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +0 -0
  322. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -0
  323. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -0
  324. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -0
  325. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +0 -0
  326. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -0
  327. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -0
  328. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -0
  329. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -0
  330. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -0
  331. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -0
  332. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -0
  333. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -0
  334. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -0
  335. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -0
  336. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -0
  337. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -0
  338. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -0
  339. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -0
  340. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -0
  341. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -0
  342. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -0
  343. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +0 -0
  344. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -0
  345. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -0
  346. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -0
  347. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -0
  348. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -0
  349. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -0
  350. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -0
  351. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -0
  352. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -0
  353. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -0
  354. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -0
  355. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -0
  356. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/network_hierarchy/__init__.py +0 -0
  357. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -0
  358. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/network_hierarchy/node.py +0 -0
  359. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/policy_group.py +0 -0
  360. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/profile_type.py +0 -0
  361. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/configuration/topology_group.py +0 -0
  362. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/device_inventory.py +0 -0
  363. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/feature_profile_parcel.py +0 -0
  364. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/misc/application_protocols.py +0 -0
  365. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/monitoring/security_policy.py +0 -0
  366. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/monitoring/server_info.py +0 -0
  367. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/__init__.py +0 -0
  368. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/centralized.py +0 -0
  369. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/access_control_list.py +0 -0
  370. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/access_control_list_ipv6.py +0 -0
  371. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/aip.py +0 -0
  372. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/amp.py +0 -0
  373. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/cflowd.py +0 -0
  374. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/control.py +0 -0
  375. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/device_access.py +0 -0
  376. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/device_access_ipv6.py +0 -0
  377. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/dns_security.py +0 -0
  378. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/hub_and_spoke.py +0 -0
  379. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/intrusion_prevention.py +0 -0
  380. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/mesh.py +0 -0
  381. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/qos_map.py +0 -0
  382. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/rewrite.py +0 -0
  383. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/route_policy.py +0 -0
  384. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/rule_set.py +0 -0
  385. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/security_group.py +0 -0
  386. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/ssl_decryption.py +0 -0
  387. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -0
  388. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/traffic_data.py +0 -0
  389. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/url_filtering.py +0 -0
  390. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/vpn_membership.py +0 -0
  391. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/definition/zone_based_firewall.py +0 -0
  392. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/app.py +0 -0
  393. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/app_probe.py +0 -0
  394. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/as_path.py +0 -0
  395. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/class_map.py +0 -0
  396. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/color.py +0 -0
  397. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/communities.py +0 -0
  398. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/data_ipv6_prefix.py +0 -0
  399. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/data_prefix.py +0 -0
  400. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/fqdn.py +0 -0
  401. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/geo_location.py +0 -0
  402. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/identity.py +0 -0
  403. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/ips_signature.py +0 -0
  404. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/ipv6_prefix.py +0 -0
  405. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/local_app.py +0 -0
  406. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/local_domain.py +0 -0
  407. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/mirror.py +0 -0
  408. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/policer.py +0 -0
  409. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/port.py +0 -0
  410. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/preferred_color_group.py +0 -0
  411. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/prefix.py +0 -0
  412. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/protocol_name.py +0 -0
  413. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/region.py +0 -0
  414. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/scalable_group_tag.py +0 -0
  415. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/site.py +0 -0
  416. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/sla.py +0 -0
  417. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/threat_grid_api_key.py +0 -0
  418. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/tloc.py +0 -0
  419. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/trunkgroup.py +0 -0
  420. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/umbrella_data.py +0 -0
  421. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/url.py +0 -0
  422. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/vpn.py +0 -0
  423. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/list/zone.py +0 -0
  424. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/localized.py +0 -0
  425. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/policy.py +0 -0
  426. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/policy_definition.py +0 -0
  427. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/policy_list.py +0 -0
  428. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/policy/security.py +0 -0
  429. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/settings.py +0 -0
  430. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/templates.py +0 -0
  431. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/tenant.py +0 -0
  432. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/models/url_monitoring.py +0 -0
  433. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/__init__.py +0 -0
  434. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/models/__init__.py +0 -0
  435. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/__init__.py +0 -0
  436. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/__init__.py +0 -0
  437. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/aaa_basic.json +0 -0
  438. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/aaa_complex.json +0 -0
  439. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/__init__.py +0 -0
  440. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/alias.json +0 -0
  441. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/basic.json +0 -0
  442. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/basic_no_value.json +0 -0
  443. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/children.json +0 -0
  444. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/children_nested.json +0 -0
  445. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/children_nested_datapath.json +0 -0
  446. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/basic/data_path.json +0 -0
  447. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_aaa.json +0 -0
  448. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -0
  449. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_banner.json +0 -0
  450. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_bfd.json +0 -0
  451. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -0
  452. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -0
  453. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -0
  454. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -0
  455. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_sig.json +0 -0
  456. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -0
  457. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -0
  458. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_vpn_basic.json +0 -0
  459. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_vpn_complex.json +0 -0
  460. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -0
  461. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/default_cisco_system.json +0 -0
  462. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -0
  463. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/omp_vsmart_2.json +0 -0
  464. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/omp_vsmart_3.json +0 -0
  465. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -0
  466. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -0
  467. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -0
  468. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -0
  469. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -0
  470. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -0
  471. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -0
  472. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/__init__.py +0 -0
  473. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/aaa.py +0 -0
  474. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_aaa.py +0 -0
  475. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_banner.py +0 -0
  476. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_bfd.py +0 -0
  477. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_logging.py +0 -0
  478. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_ntp.py +0 -0
  479. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_omp.py +0 -0
  480. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_ospf.py +0 -0
  481. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -0
  482. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_snmp.py +0 -0
  483. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_system.py +0 -0
  484. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_vpn.py +0 -0
  485. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -0
  486. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/omp_vsmart.py +0 -0
  487. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/security_vsmart.py +0 -0
  488. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/system_vsmart.py +0 -0
  489. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/vpn_vsmart.py +0 -0
  490. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -0
  491. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/aaa.json +0 -0
  492. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/alias.json +0 -0
  493. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/basic.json +0 -0
  494. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/children.json +0 -0
  495. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/children_nested.json +0 -0
  496. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/children_nested_datapath.json +0 -0
  497. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/basic/data_path.json +0 -0
  498. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cedge_aaa.json +0 -0
  499. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_banner.json +0 -0
  500. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_bfd.json +0 -0
  501. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_logging.json +0 -0
  502. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_ntp.json +0 -0
  503. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_omp.json +0 -0
  504. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_ospf.json +0 -0
  505. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -0
  506. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_snmp.json +0 -0
  507. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_system.json +0 -0
  508. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_vpn.json +0 -0
  509. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -0
  510. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/omp-vsmart.json +0 -0
  511. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/security-vsmart.json +0 -0
  512. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/system-vsmart.json +0 -0
  513. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -0
  514. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -0
  515. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_chose_model.py +0 -0
  516. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_deserialize_model.py +0 -0
  517. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_find_template_values.py +0 -0
  518. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_find_template_values_2.py +0 -0
  519. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_generate_payload.py +0 -0
  520. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/templates/test_serialize_model.py +0 -0
  521. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_admin_tech_api.py +0 -0
  522. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_alarms_api.py +0 -0
  523. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_cli_template.py +0 -0
  524. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_creation_tools.py +0 -0
  525. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_device_action_api.py +0 -0
  526. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_endpoints.py +0 -0
  527. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_feature_profile_api.py +0 -0
  528. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_feature_template_field.py +0 -0
  529. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_logs_api.py +0 -0
  530. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_models_common.py +0 -0
  531. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_monitoring_security_policy.py +0 -0
  532. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_monitoring_server_info.py +0 -0
  533. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_monitoring_status_api.py +0 -0
  534. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_mtt_aaa_api.py +0 -0
  535. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_omp_api.py +0 -0
  536. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_packet_capture.py +0 -0
  537. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_partition_manager_api.py +0 -0
  538. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_response.py +0 -0
  539. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_software_action_api.py +0 -0
  540. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_speed_test_api.py +0 -0
  541. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_task_status_api.py +0 -0
  542. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_templates.py +0 -0
  543. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_tenant_backup_restore_api.py +0 -0
  544. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_tenant_migration_api.py +0 -0
  545. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_typed_list.py +0 -0
  546. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_url_monitoring.py +0 -0
  547. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_version.py +0 -0
  548. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/tests/test_version_utils.py +0 -0
  549. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/typed_list.py +0 -0
  550. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/__init__.py +0 -0
  551. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/alarm_status.py +0 -0
  552. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/certificate_status.py +0 -0
  553. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/colors.py +0 -0
  554. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/config_status.py +0 -0
  555. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/creation_tools.py +0 -0
  556. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/dashboard.py +0 -0
  557. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/dict.py +0 -0
  558. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/feature_template/choose_model.py +0 -0
  559. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/feature_template/find_template_values.py +0 -0
  560. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/model.py +0 -0
  561. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/operation_status.py +0 -0
  562. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/personality.py +0 -0
  563. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/pydantic_field.py +0 -0
  564. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/reachability.py +0 -0
  565. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/session_type.py +0 -0
  566. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/template_type.py +0 -0
  567. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/type_check.py +0 -0
  568. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/upgrades_helper.py +0 -0
  569. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/utils/validate_status.py +0 -0
  570. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/version.py +0 -0
  571. {catalystwan-0.34.0.dev3 → catalystwan-0.34.0.dev4}/catalystwan/workflows/backup_restore_device_templates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: catalystwan
3
- Version: 0.34.0.dev3
3
+ Version: 0.34.0.dev4
4
4
  Summary: Cisco Catalyst WAN SDK for Python
5
5
  Home-page: https://github.com/cisco-open/cisco-catalyst-wan-sdk
6
6
  Author: kagorski
@@ -66,6 +66,7 @@ with create_manager_session(url=url, username=username, password=password) as se
66
66
  devices = session.api.devices.get()
67
67
  print(devices)
68
68
  ```
69
+
69
70
  **ManagerSession** extends [requests.Session](https://requests.readthedocs.io/en/latest/user/advanced/#session-objects) so all functionality from [requests](https://requests.readthedocs.io/en/latest/) library is avaiable to user, it also implements python [contextmanager](https://docs.python.org/3.8/library/contextlib.html#contextlib.contextmanager) and automatically frees server resources on exit.
70
71
 
71
72
  <details>
@@ -75,13 +76,15 @@ It is possible to configure **ManagerSession** prior sending any request.
75
76
 
76
77
  ```python
77
78
  from catalystwan.session import ManagerSession
79
+ from catalystwan.vmanage_auth import vManageAuth
78
80
 
79
81
  url = "example.com"
80
82
  username = "admin"
81
83
  password = "password123"
82
84
 
83
85
  # configure session using constructor - nothing will be sent to target server yet
84
- session = ManagerSession(url=url, username=username, password=password)
86
+ auth = vManageAuth(username, password)
87
+ session = ManagerSession(url=url, auth=auth)
85
88
  # login and send requests
86
89
  session.login()
87
90
  session.get("/dataservice/device")
@@ -130,6 +133,25 @@ with create_manager_session(url=url, username=username, password=password, subdo
130
133
 
131
134
  </details>
132
135
 
136
+ <details>
137
+ <summary> <b>Login using Api Gateway</b> <i>(click to expand)</i></summary>
138
+
139
+ ```python
140
+ from catalystwan.session import create_apigw_session
141
+
142
+ with create_apigw_session(
143
+ url="example.com",
144
+ client_id="client_id",
145
+ client_secret="client_secret",
146
+ org_name="Org-Name",
147
+ username="user",
148
+ mode="user",
149
+ token_duration=10,
150
+ ) as session:
151
+ devices = session.api.devices.get()
152
+ print(devices)
153
+ ```
154
+ </details>
133
155
 
134
156
 
135
157
  ## API usage examples
@@ -38,6 +38,7 @@ with create_manager_session(url=url, username=username, password=password) as se
38
38
  devices = session.api.devices.get()
39
39
  print(devices)
40
40
  ```
41
+
41
42
  **ManagerSession** extends [requests.Session](https://requests.readthedocs.io/en/latest/user/advanced/#session-objects) so all functionality from [requests](https://requests.readthedocs.io/en/latest/) library is avaiable to user, it also implements python [contextmanager](https://docs.python.org/3.8/library/contextlib.html#contextlib.contextmanager) and automatically frees server resources on exit.
42
43
 
43
44
  <details>
@@ -47,13 +48,15 @@ It is possible to configure **ManagerSession** prior sending any request.
47
48
 
48
49
  ```python
49
50
  from catalystwan.session import ManagerSession
51
+ from catalystwan.vmanage_auth import vManageAuth
50
52
 
51
53
  url = "example.com"
52
54
  username = "admin"
53
55
  password = "password123"
54
56
 
55
57
  # configure session using constructor - nothing will be sent to target server yet
56
- session = ManagerSession(url=url, username=username, password=password)
58
+ auth = vManageAuth(username, password)
59
+ session = ManagerSession(url=url, auth=auth)
57
60
  # login and send requests
58
61
  session.login()
59
62
  session.get("/dataservice/device")
@@ -102,6 +105,25 @@ with create_manager_session(url=url, username=username, password=password, subdo
102
105
 
103
106
  </details>
104
107
 
108
+ <details>
109
+ <summary> <b>Login using Api Gateway</b> <i>(click to expand)</i></summary>
110
+
111
+ ```python
112
+ from catalystwan.session import create_apigw_session
113
+
114
+ with create_apigw_session(
115
+ url="example.com",
116
+ client_id="client_id",
117
+ client_secret="client_secret",
118
+ org_name="Org-Name",
119
+ username="user",
120
+ mode="user",
121
+ token_duration=10,
122
+ ) as session:
123
+ devices = session.api.devices.get()
124
+ print(devices)
125
+ ```
126
+ </details>
105
127
 
106
128
 
107
129
  ## API usage examples
@@ -101,7 +101,7 @@ class UsersAPI:
101
101
  """
102
102
  self._endpoints.update_user(user_update_request.username, user_update_request)
103
103
 
104
- def update_password(self, username: str, new_password: str):
104
+ def update_password(self, username: str, new_password: str, current_user_password: str):
105
105
  """Updates exisiting user password
106
106
 
107
107
  Args:
@@ -109,8 +109,8 @@ class UsersAPI:
109
109
  new_password (str): New password for given user
110
110
  """
111
111
  update_password_request = UserUpdateRequest(
112
- username=username, password=new_password, current_user_password=self.session.password
113
- ) # type: ignore
112
+ username=username, password=new_password, current_user_password=current_user_password
113
+ )
114
114
  self._endpoints.update_password(username, update_password_request)
115
115
 
116
116
  def reset(self, username: str):
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import TYPE_CHECKING, List, Optional
5
+ from typing import TYPE_CHECKING, List
6
6
 
7
7
  from catalystwan.api.task_status_api import Task
8
8
  from catalystwan.endpoints.tenant_management import (
@@ -62,7 +62,7 @@ class TenantManagementAPI:
62
62
  tenant_id=tenant_update_request.tenant_id, tenant_update_request=tenant_update_request
63
63
  )
64
64
 
65
- def delete(self, tenant_id_list: List[str], password: Optional[str] = None) -> Task:
65
+ def delete(self, tenant_id_list: List[str], password: str) -> Task:
66
66
  """Deletes tenants on vManage
67
67
 
68
68
  Args:
@@ -72,8 +72,6 @@ class TenantManagementAPI:
72
72
  Returns:
73
73
  Task: Object representing tenant deletion process
74
74
  """
75
- if password is None:
76
- password = self.session.password
77
75
  delete_request = TenantBulkDeleteRequest(tenant_id_list=tenant_id_list, password=password)
78
76
  task_id = self._endpoints.delete_tenant_async_bulk(delete_request).id
79
77
  return Task(self.session, task_id)
@@ -0,0 +1,81 @@
1
+ import logging
2
+ from typing import TYPE_CHECKING, Literal, Optional
3
+ from urllib.parse import urlparse
4
+
5
+ from pydantic import BaseModel, Field, PositiveInt
6
+ from requests import PreparedRequest, post
7
+ from requests.auth import AuthBase
8
+
9
+ from catalystwan.exceptions import CatalystwanException
10
+ from catalystwan.response import ManagerResponse
11
+
12
+ if TYPE_CHECKING:
13
+ from catalystwan.session import ManagerSession
14
+
15
+ LoginMode = Literal["machine", "user", "session"]
16
+
17
+
18
+ class ApiGwLogin(BaseModel):
19
+ client_id: str
20
+ client_secret: str
21
+ org_name: str
22
+ mode: Optional[LoginMode] = None
23
+ username: Optional[str] = None
24
+ session: Optional[str] = None
25
+ tenant_user: Optional[bool] = None
26
+ token_duration: PositiveInt = Field(default=10, description="in minutes")
27
+
28
+
29
+ class ApiGwAuth(AuthBase):
30
+ """Attaches ApiGateway Authentication to the given Requests object.
31
+
32
+ 1. Get a bearer token by sending a POST request to the /apigw/login endpoint.
33
+ 2. Use the token in the Authorization header for subsequent requests.
34
+ """
35
+
36
+ def __init__(self, login: ApiGwLogin, logger: Optional[logging.Logger] = None):
37
+ self.login = login
38
+ self.token = ""
39
+ self.logger = logger or logging.getLogger(__name__)
40
+
41
+ def __call__(self, request: PreparedRequest) -> PreparedRequest:
42
+ self.handle_auth(request)
43
+ self.build_digest_header(request)
44
+ return request
45
+
46
+ def handle_auth(self, request: PreparedRequest) -> None:
47
+ if self.token == "":
48
+ self.authenticate(request)
49
+
50
+ def authenticate(self, request: PreparedRequest):
51
+ base_url = f"{str(urlparse(request.url).scheme)}://{str(urlparse(request.url).netloc)}"
52
+ self.token = self.get_token(base_url, self.login)
53
+
54
+ def build_digest_header(self, request: PreparedRequest) -> None:
55
+ header = {
56
+ "sdwan-org": self.login.org_name,
57
+ "Authorization": f"Bearer {self.token}",
58
+ }
59
+ request.headers.update(header)
60
+
61
+ @staticmethod
62
+ def get_token(base_url: str, apigw_login: ApiGwLogin) -> str:
63
+ response = post(
64
+ url=f"{base_url}/apigw/login",
65
+ verify=False,
66
+ json=apigw_login.model_dump(exclude_none=True),
67
+ timeout=10,
68
+ )
69
+ token = response.json().get("token", "")
70
+ if not token or not isinstance(token, str):
71
+ raise CatalystwanException("Failed to get bearer token")
72
+ return token
73
+
74
+ def __str__(self) -> str:
75
+ return f"ApiGatewayAuth(mode={self.login.mode})"
76
+
77
+ def logout(self, session: "ManagerSession") -> Optional[ManagerResponse]:
78
+ return None
79
+
80
+ def clear_tokens_and_cookies(self) -> None:
81
+ self.token = ""
@@ -0,0 +1,23 @@
1
+ from pydantic import BaseModel
2
+
3
+ from catalystwan.endpoints import APIEndpoints, post
4
+
5
+
6
+ class OnBoardClient(BaseModel):
7
+ client_id: str
8
+ client_secret: str
9
+ client_name: str
10
+
11
+
12
+ class ApiGateway(APIEndpoints):
13
+ @post("/apigw/config/reload")
14
+ def configuration_reload(self) -> None:
15
+ """After launching the API Gateway, SSP can use the API
16
+ and bearer authentication header with provision access token obtained
17
+ in the step above. It reloads the configuration from S3 bucket, Secrets Manager
18
+ and reset the RDS connection pool."""
19
+ ...
20
+
21
+ @post("/apigw/client/registration")
22
+ def on_board_client(self, payload: OnBoardClient) -> None:
23
+ ...
@@ -45,7 +45,6 @@ def create_session() -> ManagerSession:
45
45
  """Try to create a session with the environment variables, if it fails, raise an exception"""
46
46
  try:
47
47
  session = create_manager_session(**load_config())
48
- session.is_for_testing = True
49
48
  return session
50
49
  except Exception:
51
50
  raise CatalystwanException("Failed to create session")
@@ -139,6 +139,7 @@ class ManagerResponse(Response, APIEndpointClientResponse):
139
139
  def __init__(self, response: Response):
140
140
  self.__dict__.update(response.__dict__)
141
141
  self.jsessionid_expired = self._detect_expired_jsessionid()
142
+ self.api_gw_unauthorized = self._detect_apigw_unauthorized()
142
143
  try:
143
144
  self.payload = JsonPayload(response.json())
144
145
  except JSONDecodeError:
@@ -163,6 +164,10 @@ class ManagerResponse(Response, APIEndpointClientResponse):
163
164
  jar.update(parse_cookies_to_dict(cookies_string))
164
165
  return jar
165
166
 
167
+ def _detect_apigw_unauthorized(self) -> bool:
168
+ """Determines if server sent unauthorized response"""
169
+ return self.status_code == 401 and self.json().get("message", "") == "failed to validate user"
170
+
166
171
  def info(self, history: bool = False) -> str:
167
172
  """Returns human readable string containing Request-Response contents
168
173
  Args:
@@ -7,15 +7,15 @@ from enum import Enum
7
7
  from functools import cached_property
8
8
  from pathlib import Path
9
9
  from time import monotonic, sleep
10
- from typing import TYPE_CHECKING, Any, Callable, ClassVar, Dict, List, Optional, Union
10
+ from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Union
11
11
  from urllib.parse import urljoin, urlparse, urlunparse
12
12
 
13
13
  from packaging.version import Version # type: ignore
14
14
  from requests import PreparedRequest, Request, Response, Session, get, head
15
- from requests.auth import AuthBase
16
15
  from requests.exceptions import ConnectionError, HTTPError, RequestException
17
16
 
18
17
  from catalystwan import USER_AGENT
18
+ from catalystwan.apigw_auth import ApiGwAuth, ApiGwLogin, LoginMode
19
19
  from catalystwan.endpoints import APIEndpointClient
20
20
  from catalystwan.endpoints.client import AboutInfo, ServerInfo
21
21
  from catalystwan.exceptions import (
@@ -80,6 +80,73 @@ def determine_session_type(
80
80
  return SessionType.NOT_DEFINED
81
81
 
82
82
 
83
+ def create_base_url(url: str, port: Optional[int] = None) -> str:
84
+ """Creates base url based on ip address or domain and port if provided.
85
+
86
+ Returns:
87
+ str: Base url shared for every request.
88
+ """
89
+ parsed_url = urlparse(url)
90
+ netloc: str = parsed_url.netloc or parsed_url.path
91
+ scheme: str = parsed_url.scheme or "https"
92
+ base_url = urlunparse((scheme, netloc, "", None, None, None))
93
+ if port:
94
+ return f"{base_url}:{port}" # noqa: E231
95
+ return base_url
96
+
97
+
98
+ def create_apigw_session(
99
+ url: str,
100
+ client_id: str,
101
+ client_secret: str,
102
+ org_name: str,
103
+ subdomain: Optional[str] = None,
104
+ port: Optional[int] = None,
105
+ mode: Optional[LoginMode] = None,
106
+ username: Optional[str] = None,
107
+ session: Optional[str] = None,
108
+ tenant_user: Optional[bool] = None,
109
+ token_duration: int = 10,
110
+ logger: Optional[logging.Logger] = None,
111
+ ) -> ManagerSession:
112
+ """Factory method that creates session object and performs login according to parameters
113
+
114
+ Args:
115
+ url (str): IP address or domain name
116
+ client_id (str): client id
117
+ client_secret (str): client secret
118
+ org_name (str): organization name
119
+ subdomain: subdomain specifying to which view switch when creating provider as a tenant session,
120
+ works only on provider user mode
121
+ port (int): port
122
+ mode (LoginMode): login mode
123
+ username (str): username
124
+ session (str): session
125
+ tenant_user (bool): tenant user
126
+ token_duration (int): token duration
127
+ logger: override default module logger
128
+
129
+ Returns:
130
+ ManagerSession: logged-in and operative session to perform tasks on SDWAN Manager.
131
+ """
132
+ auth = ApiGwAuth(
133
+ login=ApiGwLogin(
134
+ client_id=client_id,
135
+ client_secret=client_secret,
136
+ org_name=org_name,
137
+ mode=mode,
138
+ username=username,
139
+ session=session,
140
+ tenant_user=tenant_user,
141
+ token_duration=token_duration,
142
+ ),
143
+ logger=logger,
144
+ )
145
+ session_ = ManagerSession(base_url=create_base_url(url, port), auth=auth, subdomain=subdomain, logger=logger)
146
+ session_.state = ManagerSessionState.LOGIN
147
+ return session_
148
+
149
+
83
150
  def create_manager_session(
84
151
  url: str,
85
152
  username: str,
@@ -102,13 +169,14 @@ def create_manager_session(
102
169
  Returns:
103
170
  ManagerSession: logged-in and operative session to perform tasks on SDWAN Manager.
104
171
  """
105
- session = ManagerSession(url=url, username=username, password=password, port=port, subdomain=subdomain)
106
-
107
- if logger:
108
- session.logger = logger
109
-
172
+ auth = vManageAuth(username, password, logger=logger)
173
+ session = ManagerSession(
174
+ base_url=create_base_url(url, port),
175
+ auth=auth,
176
+ subdomain=subdomain,
177
+ logger=logger,
178
+ )
110
179
  session.state = ManagerSessionState.LOGIN
111
- session.on_session_create_hook()
112
180
  return session
113
181
 
114
182
 
@@ -135,53 +203,55 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
135
203
  Defines methods and handles session connectivity available for provider, provider as tenant, and tenant.
136
204
 
137
205
  Args:
138
- url: IP address or domain name, i.e. '10.0.1.200' or 'example.com'
139
- port: port
140
- username: username
141
- password: password
206
+ base_url: IP address or domain name, i.e. '10.0.1.200' or 'example.com'
207
+ auth: authentication object - vManage or API Gateway
208
+ subdomain: subdomain specifying to which view switch when creating provider as a tenant session,
209
+ works only on provider user mode
210
+ logger: override default module logger
142
211
 
143
212
  Attributes:
144
213
  enable_relogin (bool): defaults to True, in case that session is not properly logged-in, session will try to
145
214
  relogin and try the same request again
146
- """
215
+ api: APIContainer: container for API methods
216
+ endpoints: APIEndpointContainter: container for API endpoints
217
+ state: ManagerSessionState: current state of the session can be used to control session flow
218
+ response_trace: Callable: function that logs response and request details
219
+ server_name: str: server name
220
+ platform_version: str: platform version
221
+ api_version: Version: API version
222
+ restart_timeout: int: restart timeout in seconds
223
+ session_type: SessionType: type of session
224
+ verify: bool: verify SSL certificate
147
225
 
148
- on_session_create_hook: ClassVar[Callable[[ManagerSession], Any]] = lambda *args: None
226
+ """
149
227
 
150
228
  def __init__(
151
229
  self,
152
- url: str,
153
- username: str,
154
- password: str,
155
- verify: bool = False,
156
- port: Optional[int] = None,
230
+ base_url: str,
231
+ auth: Union[vManageAuth, ApiGwAuth],
157
232
  subdomain: Optional[str] = None,
158
- auth: Optional[AuthBase] = None,
159
- validate_responses: bool = True,
160
- ):
161
- self.url = url
162
- self.port = port
163
- self.base_url = self.__create_base_url()
164
- self.username = username
165
- self.password = password
233
+ logger: Optional[logging.Logger] = None,
234
+ ) -> None:
235
+ self.base_url = base_url
166
236
  self.subdomain = subdomain
167
237
  self._session_type = SessionType.NOT_DEFINED
168
238
  self.server_name: Optional[str] = None
169
- self.logger = logging.getLogger(__name__)
239
+ self.logger = logger or logging.getLogger(__name__)
170
240
  self.enable_relogin: bool = True
171
241
  self.response_trace: Callable[
172
242
  [Optional[Response], Union[Request, PreparedRequest, None]], str
173
243
  ] = response_history_debug
174
244
  super(ManagerSession, self).__init__()
245
+ self.verify = False
175
246
  self.headers.update({"User-Agent": USER_AGENT})
176
- self.__prepare_session(verify, auth)
247
+ self._auth = auth
177
248
  self._platform_version: str = ""
178
249
  self._api_version: Version = NullVersion # type: ignore
179
- self._state: ManagerSessionState = ManagerSessionState.OPERATIVE
180
250
  self.restart_timeout: int = 1200
181
251
  self.polling_requests_timeout: int = 10
182
252
  self.request_timeout: Optional[int] = None
183
- self._validate_responses = validate_responses
184
- self._is_for_testing = False
253
+ self._validate_responses = True
254
+ self._state: ManagerSessionState = ManagerSessionState.OPERATIVE
185
255
 
186
256
  @cached_property
187
257
  def api(self) -> APIContainer:
@@ -243,11 +313,9 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
243
313
  Returns:
244
314
  ManagerSession: (self)
245
315
  """
246
-
247
316
  self.cookies.clear_session_cookies()
248
- self.auth = vManageAuth(self.base_url, self.username, self.password, verify=False)
249
- self.auth.logger = self.logger
250
-
317
+ self._auth.clear_tokens_and_cookies()
318
+ self.auth = self._auth
251
319
  if self.subdomain:
252
320
  tenant_id = self.get_tenant_id()
253
321
  vsession_id = self.get_virtual_session_id(tenant_id)
@@ -276,12 +344,16 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
276
344
  )
277
345
 
278
346
  self.logger.info(
279
- f"Logged to vManage({self.platform_version}) as {self.username}. The session type is {self.session_type}"
347
+ f"Logged to vManage({self.platform_version}) as {self.auth}. The session type is {self.session_type}"
280
348
  )
281
- if jsessionid := self.auth.set_cookie.get("JSESSIONID"):
282
- self.cookies.set("JSESSIONID", jsessionid)
349
+ self._set_jsessionid(self.auth)
283
350
  return self
284
351
 
352
+ def _set_jsessionid(self, auth: Union[vManageAuth, ApiGwAuth]) -> None:
353
+ if isinstance(auth, vManageAuth):
354
+ if jsessionid := auth.jsessionid:
355
+ self.cookies.set("JSESSIONID", jsessionid)
356
+
285
357
  def wait_server_ready(self, timeout: int, poll_period: int = 10) -> None:
286
358
  """Waits until server is ready for API requests with given timeout in seconds"""
287
359
 
@@ -357,6 +429,11 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
357
429
  self.state = ManagerSessionState.LOGIN
358
430
  return self.request(method, url, *args, **_kwargs)
359
431
 
432
+ if self.enable_relogin and response.api_gw_unauthorized and self.state == ManagerSessionState.OPERATIVE:
433
+ self.logger.warning("Logging to API GW session. Reason: unauthorized detected in response headers")
434
+ self.state = ManagerSessionState.LOGIN
435
+ return self.request(method, url, *args, **_kwargs)
436
+
360
437
  if response.request.url and "passwordReset.html" in response.request.url:
361
438
  raise DefaultPasswordError("Password must be changed to use this session.")
362
439
 
@@ -372,20 +449,6 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
372
449
  """Returns base API url plus given url path."""
373
450
  return urljoin(self.base_url, url_path)
374
451
 
375
- def __create_base_url(self) -> str:
376
- """Creates base url based on ip address or domain and port if provided.
377
-
378
- Returns:
379
- str: Base url shared for every request.
380
- """
381
- url = urlparse(self.url)
382
- netloc: str = url.netloc or url.path
383
- scheme: str = url.scheme or "https"
384
- base_url = urlunparse((scheme, netloc, "", None, None, None))
385
- if self.port:
386
- return f"{base_url}:{self.port}" # noqa: E231
387
- return base_url
388
-
389
452
  def about(self) -> AboutInfo:
390
453
  return self.endpoints.client.about()
391
454
 
@@ -449,23 +512,7 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
449
512
  return response.json()["VSessionId"]
450
513
 
451
514
  def logout(self) -> Optional[ManagerResponse]:
452
- response = None
453
- if isinstance((version := self.api_version), NullVersion):
454
- self.logger.warning("Cannot perform logout operation without known api_version.")
455
- return response
456
- else:
457
- # disable automatic relogin before performing logout request
458
- _relogin = self.enable_relogin
459
- try:
460
- self.enable_relogin = False
461
- if version >= Version("20.12"):
462
- response = self.post("/logout")
463
- else:
464
- response = self.get("/logout")
465
- finally:
466
- # restore original setting after performing logout request
467
- self.enable_relogin = _relogin
468
- return response
515
+ return self._auth.logout(self)
469
516
 
470
517
  def close(self) -> None:
471
518
  """Closes the ManagerSession.
@@ -481,10 +528,6 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
481
528
  self.logout()
482
529
  super().close()
483
530
 
484
- def __prepare_session(self, verify: bool, auth: Optional[AuthBase]) -> None:
485
- self.auth = auth
486
- self.verify = verify
487
-
488
531
  @property
489
532
  def session_type(self) -> SessionType:
490
533
  return self._session_type
@@ -510,33 +553,8 @@ class ManagerSession(ManagerResponseAdapter, APIEndpointClient):
510
553
  def validate_responses(self, value: bool):
511
554
  self._validate_responses = value
512
555
 
513
- @property
514
- def is_for_testing(self) -> bool:
515
- return self._is_for_testing
516
-
517
- @is_for_testing.setter
518
- def is_for_testing(self, value: bool):
519
- self._is_for_testing = value
556
+ def __copy__(self) -> ManagerSession:
557
+ return ManagerSession(base_url=self.base_url, auth=self._auth, subdomain=self.subdomain, logger=self.logger)
520
558
 
521
559
  def __str__(self) -> str:
522
- return f"{self.username}@{self.base_url}"
523
-
524
- def __repr__(self):
525
- if self._is_for_testing:
526
- return f"{self.__class__.__name__}('TEST_SESSION')"
527
- return (
528
- f"{self.__class__.__name__}('{self.url}', '{self.username}', '{self.password}', port={self.port}, "
529
- f"subdomain='{self.subdomain}')"
530
- )
531
-
532
- def __eq__(self, other):
533
- if isinstance(other, ManagerSession):
534
- comparison_list = [
535
- self.url == other.url,
536
- self.username == other.username,
537
- self.password == other.password,
538
- self.port == other.port,
539
- str(self.subdomain) == str(other.subdomain),
540
- ]
541
- return True if all(comparison_list) else False
542
- return False
560
+ return f"ManagerSession(session_type={self.session_type}, auth={self._auth})"
@@ -122,13 +122,14 @@ class TestUsersAPI(unittest.TestCase):
122
122
  # Arrange
123
123
  username = "new_user"
124
124
  new_password = "PaSsWoRd" # pragma: allowlist secret
125
+ current_password = "32313123213" # pragma: allowlist secret
125
126
  self.api._endpoints.update_password = MagicMock()
126
127
  # Act
127
- self.api.update_password(username, new_password)
128
+ self.api.update_password(username, new_password, current_password)
128
129
  # Assert
129
130
  self.api._endpoints.update_password.assert_called_once_with(
130
131
  username,
131
- UserUpdateRequest(username=username, password=new_password, current_user_password=self.session.password),
132
+ UserUpdateRequest(username=username, password=new_password, current_user_password=current_password),
132
133
  )
133
134
 
134
135
  def test_reset(self):