catalystwan 0.41.2.dev9__py3-none-any.whl → 0.41.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. catalystwan/ENDPOINTS.md +611 -0
  2. catalystwan/__init__.py +2 -3
  3. catalystwan/api/administration.py +2 -13
  4. catalystwan/api/api_container.py +1 -4
  5. catalystwan/api/config_group_api.py +16 -41
  6. catalystwan/api/configuration_groups/parcel.py +30 -100
  7. catalystwan/api/configuration_groups/parcels/cellular_controller.py +33 -0
  8. catalystwan/api/feature_profile_api.py +237 -2016
  9. catalystwan/api/policy_api.py +116 -470
  10. catalystwan/api/template_api.py +44 -113
  11. catalystwan/api/templates/README.md +47 -61
  12. catalystwan/api/templates/cli_template.py +7 -17
  13. catalystwan/api/templates/device_template/device_template.py +32 -127
  14. catalystwan/api/templates/device_template/device_template_payload.json.j2 +19 -0
  15. catalystwan/api/templates/feature_template.py +3 -3
  16. catalystwan/api/templates/models/cisco_aaa_model.py +42 -289
  17. catalystwan/api/templates/models/cisco_banner_model.py +2 -11
  18. catalystwan/api/templates/models/cisco_bfd_model.py +36 -31
  19. catalystwan/api/templates/models/cisco_bgp_model.py +131 -382
  20. catalystwan/api/templates/models/cisco_logging_model.py +43 -80
  21. catalystwan/api/templates/models/cisco_ntp_model.py +15 -34
  22. catalystwan/api/templates/models/cisco_omp_model.py +60 -70
  23. catalystwan/api/templates/models/cisco_ospf.py +74 -143
  24. catalystwan/api/templates/models/cisco_ospfv3.py +95 -217
  25. catalystwan/api/templates/models/cisco_secure_internet_gateway.py +142 -304
  26. catalystwan/api/templates/models/cisco_snmp_model.py +52 -66
  27. catalystwan/api/templates/models/cisco_system.py +129 -238
  28. catalystwan/api/templates/models/cisco_vpn_interface_model.py +275 -632
  29. catalystwan/api/templates/models/cisco_vpn_model.py +270 -433
  30. catalystwan/api/templates/models/cli_template.py +2 -3
  31. catalystwan/api/templates/models/omp_vsmart_model.py +10 -46
  32. catalystwan/api/templates/models/security_vsmart_model.py +8 -11
  33. catalystwan/api/templates/models/supported.py +4 -10
  34. catalystwan/api/templates/models/system_vsmart_model.py +27 -164
  35. catalystwan/apigw_auth.py +2 -6
  36. catalystwan/dataclasses.py +53 -2
  37. catalystwan/endpoints/__init__.py +41 -41
  38. catalystwan/endpoints/certificate_management_device.py +0 -4
  39. catalystwan/endpoints/cluster_management.py +9 -30
  40. catalystwan/endpoints/configuration/feature_profile/sdwan/policy_object.py +12 -35
  41. catalystwan/endpoints/configuration/feature_profile/sdwan/system.py +11 -164
  42. catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py +26 -144
  43. catalystwan/endpoints/configuration/policy/definition/access_control_list.py +11 -6
  44. catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py +11 -6
  45. catalystwan/endpoints/configuration/policy/definition/control.py +11 -6
  46. catalystwan/endpoints/configuration/policy/definition/device_access.py +11 -6
  47. catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py +11 -6
  48. catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py +11 -6
  49. catalystwan/endpoints/configuration/policy/definition/mesh.py +11 -2
  50. catalystwan/endpoints/configuration/policy/definition/qos_map.py +11 -2
  51. catalystwan/endpoints/configuration/policy/definition/rewrite.py +11 -6
  52. catalystwan/endpoints/configuration/policy/definition/rule_set.py +11 -2
  53. catalystwan/endpoints/configuration/policy/definition/security_group.py +11 -6
  54. catalystwan/endpoints/configuration/policy/definition/traffic_data.py +11 -6
  55. catalystwan/endpoints/configuration/policy/definition/vpn_membership.py +11 -6
  56. catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py +11 -6
  57. catalystwan/endpoints/configuration/policy/list/app.py +16 -3
  58. catalystwan/endpoints/configuration/policy/list/app_probe.py +15 -6
  59. catalystwan/endpoints/configuration/policy/list/as_path.py +16 -3
  60. catalystwan/endpoints/configuration/policy/list/class_map.py +16 -3
  61. catalystwan/endpoints/configuration/policy/list/color.py +16 -3
  62. catalystwan/endpoints/configuration/policy/list/community.py +16 -3
  63. catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py +15 -6
  64. catalystwan/endpoints/configuration/policy/list/data_prefix.py +16 -3
  65. catalystwan/endpoints/configuration/policy/list/expanded_community.py +15 -6
  66. catalystwan/endpoints/configuration/policy/list/fqdn.py +16 -3
  67. catalystwan/endpoints/configuration/policy/list/geo_location.py +16 -3
  68. catalystwan/endpoints/configuration/policy/list/ips_signature.py +15 -6
  69. catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py +16 -3
  70. catalystwan/endpoints/configuration/policy/list/local_app.py +16 -3
  71. catalystwan/endpoints/configuration/policy/list/local_domain.py +16 -3
  72. catalystwan/endpoints/configuration/policy/list/mirror.py +16 -3
  73. catalystwan/endpoints/configuration/policy/list/policer.py +16 -3
  74. catalystwan/endpoints/configuration/policy/list/port.py +16 -3
  75. catalystwan/endpoints/configuration/policy/list/preferred_color_group.py +15 -6
  76. catalystwan/endpoints/configuration/policy/list/prefix.py +16 -4
  77. catalystwan/endpoints/configuration/policy/list/protocol_name.py +15 -6
  78. catalystwan/endpoints/configuration/policy/list/region.py +10 -2
  79. catalystwan/endpoints/configuration/policy/list/site.py +16 -3
  80. catalystwan/endpoints/configuration/policy/list/sla.py +16 -3
  81. catalystwan/endpoints/configuration/policy/list/tloc.py +16 -3
  82. catalystwan/endpoints/configuration/policy/list/url_allow_list.py +16 -3
  83. catalystwan/endpoints/configuration/policy/list/url_block_list.py +16 -3
  84. catalystwan/endpoints/configuration/policy/list/vpn.py +16 -3
  85. catalystwan/endpoints/configuration/policy/list/zone.py +16 -3
  86. catalystwan/endpoints/configuration/policy/security_template.py +3 -2
  87. catalystwan/endpoints/configuration/software_actions.py +4 -2
  88. catalystwan/endpoints/configuration_dashboard_status.py +2 -2
  89. catalystwan/endpoints/configuration_device_template.py +1 -15
  90. catalystwan/endpoints/configuration_feature_profile.py +11 -8
  91. catalystwan/endpoints/configuration_group.py +5 -28
  92. catalystwan/endpoints/configuration_settings.py +1 -90
  93. catalystwan/endpoints/endpoints_container.py +18 -82
  94. catalystwan/endpoints/real_time_monitoring/reboot_history.py +3 -1
  95. catalystwan/endpoints/tenant_migration.py +0 -2
  96. catalystwan/exceptions.py +0 -24
  97. catalystwan/integration_tests/test_find_template_values.py +18 -7
  98. catalystwan/models/common.py +2 -1898
  99. catalystwan/models/configuration/common.py +0 -1
  100. catalystwan/models/configuration/config_migration.py +36 -0
  101. catalystwan/models/configuration/feature_profile/common.py +149 -634
  102. catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py +26 -0
  103. catalystwan/models/configuration/feature_profile/sdwan/policy_object/__init__.py +60 -69
  104. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/app_probe.py +20 -34
  105. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/application_list.py +6 -8
  106. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/color_list.py +5 -7
  107. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/data_prefix.py +4 -13
  108. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/expanded_community_list.py +7 -9
  109. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/fowarding_class.py +5 -7
  110. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_data_prefix.py +9 -11
  111. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv6_prefix_list.py +10 -25
  112. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/{policer.py → policier.py} +10 -12
  113. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefered_group_color.py +10 -29
  114. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/prefix_list.py +8 -23
  115. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/sla_class.py +31 -12
  116. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/standard_community.py +10 -16
  117. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/tloc_list.py +7 -8
  118. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/application_list.py +6 -8
  119. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/data_prefix.py +5 -7
  120. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/fqdn.py +5 -7
  121. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/geolocation_list.py +5 -7
  122. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ips_signature.py +5 -7
  123. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/local_domain.py +5 -7
  124. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/protocol_list.py +5 -7
  125. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/security_port.py +11 -21
  126. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url.py +15 -36
  127. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/zone.py +18 -14
  128. catalystwan/models/configuration/feature_profile/sdwan/service/acl.py +409 -0
  129. catalystwan/models/configuration/feature_profile/sdwan/service/appqoe.py +42 -77
  130. catalystwan/models/configuration/feature_profile/sdwan/service/bgp.py +288 -0
  131. catalystwan/models/configuration/feature_profile/sdwan/service/dhcp_server.py +64 -107
  132. catalystwan/models/configuration/feature_profile/sdwan/service/eigrp.py +42 -39
  133. catalystwan/models/configuration/feature_profile/sdwan/service/lan/common.py +88 -7
  134. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ethernet.py +156 -232
  135. catalystwan/models/configuration/feature_profile/sdwan/service/lan/gre.py +108 -38
  136. catalystwan/models/configuration/feature_profile/sdwan/service/lan/ipsec.py +84 -77
  137. catalystwan/models/configuration/feature_profile/sdwan/service/lan/svi.py +56 -62
  138. catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py +121 -112
  139. catalystwan/models/configuration/feature_profile/sdwan/service/multicast.py +57 -56
  140. catalystwan/models/configuration/feature_profile/sdwan/service/object_tracker.py +21 -15
  141. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospf.py +47 -55
  142. catalystwan/models/configuration/feature_profile/sdwan/{routing → service}/ospfv3.py +72 -74
  143. catalystwan/models/configuration/feature_profile/sdwan/service/route_policy.py +110 -358
  144. catalystwan/models/configuration/feature_profile/sdwan/service/service_insertion_attachment.py +25 -17
  145. catalystwan/models/configuration/feature_profile/sdwan/service/switchport.py +58 -50
  146. catalystwan/models/configuration/feature_profile/sdwan/service/tracker.py +21 -12
  147. catalystwan/models/configuration/feature_profile/sdwan/service/wireless_lan.py +31 -27
  148. catalystwan/models/configuration/feature_profile/sdwan/system/aaa.py +10 -58
  149. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py +23 -26
  150. catalystwan/models/configuration/profile_type.py +6 -1
  151. catalystwan/models/policy/__init__.py +69 -282
  152. catalystwan/models/policy/centralized.py +29 -26
  153. catalystwan/models/policy/{definition → definitions}/access_control_list.py +17 -47
  154. catalystwan/models/policy/{definition → definitions}/access_control_list_ipv6.py +18 -42
  155. catalystwan/models/policy/{definition → definitions}/control.py +25 -48
  156. catalystwan/models/policy/{definition → definitions}/device_access.py +11 -22
  157. catalystwan/models/policy/{definition → definitions}/device_access_ipv6.py +11 -20
  158. catalystwan/models/policy/{definition → definitions}/hub_and_spoke.py +4 -18
  159. catalystwan/models/policy/{definition → definitions}/mesh.py +1 -13
  160. catalystwan/models/policy/{definition → definitions}/qos_map.py +32 -39
  161. catalystwan/models/policy/{definition → definitions}/rewrite.py +2 -12
  162. catalystwan/models/policy/{definition → definitions}/rule_set.py +48 -66
  163. catalystwan/models/policy/{definition → definitions}/security_group.py +14 -38
  164. catalystwan/models/policy/{definition → definitions}/traffic_data.py +61 -184
  165. catalystwan/models/policy/{definition → definitions}/vpn_membership.py +1 -13
  166. catalystwan/models/policy/{definition → definitions}/zone_based_firewall.py +32 -93
  167. catalystwan/models/policy/lists.py +330 -0
  168. catalystwan/models/policy/lists_entries.py +444 -0
  169. catalystwan/models/policy/localized.py +16 -34
  170. catalystwan/models/policy/policy.py +10 -14
  171. catalystwan/models/policy/policy_definition.py +173 -673
  172. catalystwan/models/policy/policy_list.py +27 -38
  173. catalystwan/models/policy/security.py +46 -145
  174. catalystwan/response.py +2 -6
  175. catalystwan/session.py +1 -1
  176. catalystwan/tests/templates/definitions/{cisco_vpn_basic.json → Basic_Cisco_VPN_Model.json} +2 -2
  177. catalystwan/tests/templates/definitions/complex_aaa.json +277 -0
  178. catalystwan/tests/templates/definitions/{cisco_vpn_complex.json → complex_cisco_vpn.json} +12 -27
  179. catalystwan/tests/templates/definitions/{cisco_aaa.json → iuo.json} +15 -44
  180. catalystwan/tests/templates/definitions/omp_1.json +11 -0
  181. catalystwan/tests/templates/definitions/{omp_vsmart_2.json → omp_2.json} +2 -16
  182. catalystwan/tests/templates/definitions/{omp_vsmart_3.json → omp_3.json} +2 -16
  183. catalystwan/tests/templates/models/__init__.py +13 -46
  184. catalystwan/tests/templates/models/cisco_aaa.py +48 -81
  185. catalystwan/tests/templates/models/cisco_banner.py +2 -2
  186. catalystwan/tests/templates/models/cisco_bfd.py +6 -4
  187. catalystwan/tests/templates/models/cisco_system.py +3 -108
  188. catalystwan/tests/templates/models/cisco_vpn.py +72 -42
  189. catalystwan/tests/templates/models/omp_vsmart.py +8 -28
  190. catalystwan/tests/templates/schemas/cedge_aaa.json +1 -1
  191. catalystwan/tests/templates/schemas/cisco_system.json +0 -242
  192. catalystwan/tests/templates/schemas/cisco_vpn.json +1 -53
  193. catalystwan/tests/templates/schemas/omp-vsmart.json +0 -20
  194. catalystwan/tests/templates/test_chose_model.py +10 -6
  195. catalystwan/tests/templates/test_deserialize_model.py +4 -4
  196. catalystwan/tests/templates/test_find_template_values.py +0 -229
  197. catalystwan/tests/templates/test_serialize_model.py +2 -1
  198. catalystwan/tests/test_cli_template.py +9 -8
  199. catalystwan/tests/test_endpoints.py +11 -42
  200. catalystwan/tests/test_templates.py +19 -16
  201. catalystwan/utils/feature_template/find_template_values.py +9 -22
  202. catalystwan/utils/timezone.py +422 -0
  203. catalystwan/workflows/tenant_migration.py +1 -1
  204. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/METADATA +1 -20
  205. catalystwan-0.41.3.dist-info/RECORD +353 -0
  206. catalystwan/api/builders/__init__.py +0 -14
  207. catalystwan/api/builders/feature_profiles/__init__.py +0 -0
  208. catalystwan/api/builders/feature_profiles/application_priority.py +0 -58
  209. catalystwan/api/builders/feature_profiles/builder_factory.py +0 -59
  210. catalystwan/api/builders/feature_profiles/cli.py +0 -76
  211. catalystwan/api/builders/feature_profiles/mixins.py +0 -44
  212. catalystwan/api/builders/feature_profiles/other.py +0 -79
  213. catalystwan/api/builders/feature_profiles/report.py +0 -155
  214. catalystwan/api/builders/feature_profiles/service.py +0 -248
  215. catalystwan/api/builders/feature_profiles/system.py +0 -80
  216. catalystwan/api/builders/feature_profiles/transport.py +0 -256
  217. catalystwan/api/builders/feature_profiles/uc_voice.py +0 -287
  218. catalystwan/api/templates/models/aaa_model.py +0 -387
  219. catalystwan/api/templates/models/vpn_vsmart_interface_model.py +0 -198
  220. catalystwan/api/templates/models/vpn_vsmart_model.py +0 -124
  221. catalystwan/endpoints/configuration/feature_profile/sdwan/application_priority.py +0 -107
  222. catalystwan/endpoints/configuration/feature_profile/sdwan/cli.py +0 -60
  223. catalystwan/endpoints/configuration/feature_profile/sdwan/dns_security.py +0 -83
  224. catalystwan/endpoints/configuration/feature_profile/sdwan/embedded_security.py +0 -88
  225. catalystwan/endpoints/configuration/feature_profile/sdwan/other.py +0 -62
  226. catalystwan/endpoints/configuration/feature_profile/sdwan/service.py +0 -154
  227. catalystwan/endpoints/configuration/feature_profile/sdwan/sig_security.py +0 -88
  228. catalystwan/endpoints/configuration/feature_profile/sdwan/topology.py +0 -93
  229. catalystwan/endpoints/configuration/feature_profile/sdwan/uc_voice.py +0 -77
  230. catalystwan/endpoints/configuration/network_hierarchy.py +0 -47
  231. catalystwan/endpoints/configuration/packages.py +0 -36
  232. catalystwan/endpoints/configuration/policy/abstractions.py +0 -49
  233. catalystwan/endpoints/configuration/policy/definition/aip.py +0 -52
  234. catalystwan/endpoints/configuration/policy/definition/amp.py +0 -52
  235. catalystwan/endpoints/configuration/policy/definition/app_route.py +0 -50
  236. catalystwan/endpoints/configuration/policy/definition/cflowd.py +0 -46
  237. catalystwan/endpoints/configuration/policy/definition/dial_peer.py +0 -57
  238. catalystwan/endpoints/configuration/policy/definition/dns_security.py +0 -50
  239. catalystwan/endpoints/configuration/policy/definition/fxo_port.py +0 -57
  240. catalystwan/endpoints/configuration/policy/definition/fxs_did_port.py +0 -57
  241. catalystwan/endpoints/configuration/policy/definition/fxs_port.py +0 -57
  242. catalystwan/endpoints/configuration/policy/definition/intrusion_prevention.py +0 -52
  243. catalystwan/endpoints/configuration/policy/definition/pri_isdn_port.py +0 -57
  244. catalystwan/endpoints/configuration/policy/definition/route_policy.py +0 -50
  245. catalystwan/endpoints/configuration/policy/definition/srst_phone_profile.py +0 -59
  246. catalystwan/endpoints/configuration/policy/definition/ssl_decryption.py +0 -50
  247. catalystwan/endpoints/configuration/policy/definition/ssl_decryption_utd_profile.py +0 -52
  248. catalystwan/endpoints/configuration/policy/definition/url_filtering.py +0 -50
  249. catalystwan/endpoints/configuration/policy/definition/vpn_qos_map.py +0 -50
  250. catalystwan/endpoints/configuration/policy/list/extended_community.py +0 -52
  251. catalystwan/endpoints/configuration/policy/list/fax_protocol.py +0 -48
  252. catalystwan/endpoints/configuration/policy/list/identity.py +0 -48
  253. catalystwan/endpoints/configuration/policy/list/media_profile.py +0 -52
  254. catalystwan/endpoints/configuration/policy/list/modem_pass_through.py +0 -52
  255. catalystwan/endpoints/configuration/policy/list/scalable_group_tag.py +0 -52
  256. catalystwan/endpoints/configuration/policy/list/supervisory_disconnect.py +0 -52
  257. catalystwan/endpoints/configuration/policy/list/threat_grid_api_key.py +0 -52
  258. catalystwan/endpoints/configuration/policy/list/translation_profile.py +0 -52
  259. catalystwan/endpoints/configuration/policy/list/translation_rules.py +0 -52
  260. catalystwan/endpoints/configuration/policy/list/trunkgroup.py +0 -48
  261. catalystwan/endpoints/configuration/policy/list/umbrella_data.py +0 -52
  262. catalystwan/endpoints/configuration/policy/voice_template.py +0 -39
  263. catalystwan/endpoints/configuration/policy_group.py +0 -30
  264. catalystwan/endpoints/configuration/topology_group.py +0 -51
  265. catalystwan/endpoints/configuration_general_template.py +0 -31
  266. catalystwan/endpoints/configuration_template_master.py +0 -48
  267. catalystwan/integration_tests/base.py +0 -81
  268. catalystwan/integration_tests/feature_profile/sdwan/__init__.py +0 -0
  269. catalystwan/integration_tests/feature_profile/sdwan/policy/__init__.py +0 -0
  270. catalystwan/integration_tests/feature_profile/sdwan/policy/base.py +0 -33
  271. catalystwan/integration_tests/feature_profile/sdwan/policy/test_extended_community.py +0 -33
  272. catalystwan/integration_tests/feature_profile/sdwan/policy/test_security_app_list.py +0 -32
  273. catalystwan/integration_tests/feature_profile/sdwan/test_application_priority.py +0 -433
  274. catalystwan/integration_tests/feature_profile/sdwan/test_cli.py +0 -54
  275. catalystwan/integration_tests/feature_profile/sdwan/test_dns_security.py +0 -106
  276. catalystwan/integration_tests/feature_profile/sdwan/test_other.py +0 -49
  277. catalystwan/integration_tests/feature_profile/sdwan/test_service.py +0 -1078
  278. catalystwan/integration_tests/feature_profile/sdwan/test_sig_security.py +0 -322
  279. catalystwan/integration_tests/feature_profile/sdwan/test_ssl_decryption.py +0 -85
  280. catalystwan/integration_tests/feature_profile/sdwan/test_system.py +0 -368
  281. catalystwan/integration_tests/feature_profile/sdwan/test_tracker.py +0 -127
  282. catalystwan/integration_tests/feature_profile/sdwan/test_transport.py +0 -1698
  283. catalystwan/integration_tests/feature_profile/sdwan/topology/test_topology.py +0 -93
  284. catalystwan/integration_tests/feature_profile/test_parcel.py +0 -54
  285. catalystwan/integration_tests/profile_builder/__init__.py +0 -0
  286. catalystwan/integration_tests/profile_builder/test_pb_service.py +0 -197
  287. catalystwan/integration_tests/profile_builder/test_pb_transport.py +0 -226
  288. catalystwan/integration_tests/profile_builder/test_pb_uc_voice.py +0 -277
  289. catalystwan/integration_tests/test_data/__init__.py +0 -117
  290. catalystwan/integration_tests/test_network_hierarchy.py +0 -82
  291. catalystwan/integration_tests/test_settings.py +0 -30
  292. catalystwan/models/configuration/feature_profile/parcel.py +0 -245
  293. catalystwan/models/configuration/feature_profile/sdwan/acl/__init__.py +0 -13
  294. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv4acl.py +0 -298
  295. catalystwan/models/configuration/feature_profile/sdwan/acl/ipv6acl.py +0 -344
  296. catalystwan/models/configuration/feature_profile/sdwan/application_priority/__init__.py +0 -218
  297. catalystwan/models/configuration/feature_profile/sdwan/application_priority/cloud_probe.py +0 -61
  298. catalystwan/models/configuration/feature_profile/sdwan/application_priority/policy_settings.py +0 -31
  299. catalystwan/models/configuration/feature_profile/sdwan/application_priority/qos_policy.py +0 -102
  300. catalystwan/models/configuration/feature_profile/sdwan/application_priority/traffic_policy.py +0 -1057
  301. catalystwan/models/configuration/feature_profile/sdwan/cli/__init__.py +0 -23
  302. catalystwan/models/configuration/feature_profile/sdwan/cli/config.py +0 -18
  303. catalystwan/models/configuration/feature_profile/sdwan/cli/full_config.py +0 -15
  304. catalystwan/models/configuration/feature_profile/sdwan/dns_security/__init__.py +0 -13
  305. catalystwan/models/configuration/feature_profile/sdwan/dns_security/dns.py +0 -110
  306. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/__init__.py +0 -23
  307. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/ngfirewall.py +0 -493
  308. catalystwan/models/configuration/feature_profile/sdwan/embedded_security/policy.py +0 -171
  309. catalystwan/models/configuration/feature_profile/sdwan/other/__init__.py +0 -25
  310. catalystwan/models/configuration/feature_profile/sdwan/other/cybervision.py +0 -44
  311. catalystwan/models/configuration/feature_profile/sdwan/other/thousandeyes.py +0 -147
  312. catalystwan/models/configuration/feature_profile/sdwan/other/ucse.py +0 -110
  313. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/as_path.py +0 -22
  314. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/extended_community.py +0 -34
  315. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_network_object.py +0 -15
  316. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/ipv4_service_object.py +0 -254
  317. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/mirror.py +0 -27
  318. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/network_object_group.py +0 -15
  319. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/object_group.py +0 -15
  320. catalystwan/models/configuration/feature_profile/sdwan/policy_object/policy/service_object_group.py +0 -21
  321. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/aip.py +0 -64
  322. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/amp.py +0 -79
  323. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/identity.py +0 -30
  324. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/intrusion_prevention.py +0 -58
  325. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/object_group.py +0 -72
  326. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/rule_set.py +0 -137
  327. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/scalable_group_tag.py +0 -26
  328. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption.py +0 -126
  329. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/ssl_decryption_profile.py +0 -165
  330. catalystwan/models/configuration/feature_profile/sdwan/policy_object/security/url_filtering.py +0 -148
  331. catalystwan/models/configuration/feature_profile/sdwan/routing/__init__.py +0 -26
  332. catalystwan/models/configuration/feature_profile/sdwan/routing/bgp.py +0 -609
  333. catalystwan/models/configuration/feature_profile/sdwan/service/__init__.py +0 -91
  334. catalystwan/models/configuration/feature_profile/sdwan/service/dual_router_ha.py +0 -26
  335. catalystwan/models/configuration/feature_profile/sdwan/service/lan/multilink.py +0 -101
  336. catalystwan/models/configuration/feature_profile/sdwan/service/service_chain.py +0 -38
  337. catalystwan/models/configuration/feature_profile/sdwan/sig_security/__init__.py +0 -19
  338. catalystwan/models/configuration/feature_profile/sdwan/sig_security/sig_security.py +0 -379
  339. catalystwan/models/configuration/feature_profile/sdwan/system/__init__.py +0 -59
  340. catalystwan/models/configuration/feature_profile/sdwan/system/banner.py +0 -30
  341. catalystwan/models/configuration/feature_profile/sdwan/system/basic.py +0 -290
  342. catalystwan/models/configuration/feature_profile/sdwan/system/bfd.py +0 -69
  343. catalystwan/models/configuration/feature_profile/sdwan/system/device_access.py +0 -157
  344. catalystwan/models/configuration/feature_profile/sdwan/system/device_access_ipv6.py +0 -157
  345. catalystwan/models/configuration/feature_profile/sdwan/system/global_parcel.py +0 -163
  346. catalystwan/models/configuration/feature_profile/sdwan/system/logging_parcel.py +0 -162
  347. catalystwan/models/configuration/feature_profile/sdwan/system/mrf.py +0 -75
  348. catalystwan/models/configuration/feature_profile/sdwan/system/ntp.py +0 -103
  349. catalystwan/models/configuration/feature_profile/sdwan/system/omp.py +0 -120
  350. catalystwan/models/configuration/feature_profile/sdwan/system/security.py +0 -179
  351. catalystwan/models/configuration/feature_profile/sdwan/system/snmp.py +0 -173
  352. catalystwan/models/configuration/feature_profile/sdwan/topology/__init__.py +0 -29
  353. catalystwan/models/configuration/feature_profile/sdwan/topology/custom_control.py +0 -425
  354. catalystwan/models/configuration/feature_profile/sdwan/topology/hubspoke.py +0 -60
  355. catalystwan/models/configuration/feature_profile/sdwan/topology/mesh.py +0 -23
  356. catalystwan/models/configuration/feature_profile/sdwan/trackers/__init__.py +0 -36
  357. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker.py +0 -96
  358. catalystwan/models/configuration/feature_profile/sdwan/trackers/tracker_group.py +0 -63
  359. catalystwan/models/configuration/feature_profile/sdwan/transport/__init__.py +0 -93
  360. catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_profile.py +0 -71
  361. catalystwan/models/configuration/feature_profile/sdwan/transport/gps.py +0 -37
  362. catalystwan/models/configuration/feature_profile/sdwan/transport/management/ethernet.py +0 -121
  363. catalystwan/models/configuration/feature_profile/sdwan/transport/t1e1controller.py +0 -124
  364. catalystwan/models/configuration/feature_profile/sdwan/transport/vpn.py +0 -285
  365. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/cellular.py +0 -173
  366. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ethernet.py +0 -389
  367. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/gre.py +0 -46
  368. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/ipsec.py +0 -137
  369. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/multilink.py +0 -219
  370. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/protocol_over.py +0 -405
  371. catalystwan/models/configuration/feature_profile/sdwan/transport/wan/interface/t1e1serial.py +0 -195
  372. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/__init__.py +0 -62
  373. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/analog_interface.py +0 -436
  374. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/call_routing.py +0 -179
  375. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/digital_interface.py +0 -380
  376. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/dsp_farm.py +0 -193
  377. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/media_profile.py +0 -17
  378. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/server_group.py +0 -51
  379. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/srst.py +0 -86
  380. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/supervisory_disconnect.py +0 -69
  381. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_profile.py +0 -42
  382. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/translation_rule.py +0 -31
  383. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/trunk_group.py +0 -26
  384. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_global.py +0 -57
  385. catalystwan/models/configuration/feature_profile/sdwan/uc_voice/voice_tenant.py +0 -40
  386. catalystwan/models/configuration/network_hierarchy/__init__.py +0 -24
  387. catalystwan/models/configuration/network_hierarchy/cflowd.py +0 -128
  388. catalystwan/models/configuration/network_hierarchy/node.py +0 -88
  389. catalystwan/models/configuration/network_hierarchy/security_logging.py +0 -91
  390. catalystwan/models/configuration/packages.py +0 -57
  391. catalystwan/models/configuration/policy_group.py +0 -74
  392. catalystwan/models/configuration/topology_group.py +0 -52
  393. catalystwan/models/policy/definition/aip.py +0 -60
  394. catalystwan/models/policy/definition/amp.py +0 -65
  395. catalystwan/models/policy/definition/app_route.py +0 -246
  396. catalystwan/models/policy/definition/cflowd.py +0 -95
  397. catalystwan/models/policy/definition/dial_peer.py +0 -60
  398. catalystwan/models/policy/definition/dns_security.py +0 -130
  399. catalystwan/models/policy/definition/fxo_port.py +0 -63
  400. catalystwan/models/policy/definition/fxs_did_port.py +0 -58
  401. catalystwan/models/policy/definition/fxs_port.py +0 -56
  402. catalystwan/models/policy/definition/intrusion_prevention.py +0 -55
  403. catalystwan/models/policy/definition/pri_isdn_port.py +0 -48
  404. catalystwan/models/policy/definition/route_policy.py +0 -187
  405. catalystwan/models/policy/definition/srst_phone_profile.py +0 -37
  406. catalystwan/models/policy/definition/ssl_decryption.py +0 -209
  407. catalystwan/models/policy/definition/ssl_decryption_utd_profile.py +0 -88
  408. catalystwan/models/policy/definition/url_filtering.py +0 -70
  409. catalystwan/models/policy/definition/vpn_qos_map.py +0 -46
  410. catalystwan/models/policy/list/app.py +0 -44
  411. catalystwan/models/policy/list/app_probe.py +0 -42
  412. catalystwan/models/policy/list/as_path.py +0 -30
  413. catalystwan/models/policy/list/class_map.py +0 -30
  414. catalystwan/models/policy/list/color.py +0 -28
  415. catalystwan/models/policy/list/communities.py +0 -83
  416. catalystwan/models/policy/list/data_ipv6_prefix.py +0 -30
  417. catalystwan/models/policy/list/data_prefix.py +0 -30
  418. catalystwan/models/policy/list/fax_protocol.py +0 -45
  419. catalystwan/models/policy/list/fqdn.py +0 -24
  420. catalystwan/models/policy/list/geo_location.py +0 -33
  421. catalystwan/models/policy/list/identity.py +0 -29
  422. catalystwan/models/policy/list/ips_signature.py +0 -27
  423. catalystwan/models/policy/list/ipv6_prefix.py +0 -33
  424. catalystwan/models/policy/list/local_app.py +0 -45
  425. catalystwan/models/policy/list/local_domain.py +0 -36
  426. catalystwan/models/policy/list/media_profile.py +0 -44
  427. catalystwan/models/policy/list/mirror.py +0 -27
  428. catalystwan/models/policy/list/modem_pass_through.py +0 -27
  429. catalystwan/models/policy/list/policer.py +0 -39
  430. catalystwan/models/policy/list/port.py +0 -33
  431. catalystwan/models/policy/list/preferred_color_group.py +0 -82
  432. catalystwan/models/policy/list/prefix.py +0 -33
  433. catalystwan/models/policy/list/protocol_name.py +0 -26
  434. catalystwan/models/policy/list/region.py +0 -45
  435. catalystwan/models/policy/list/scalable_group_tag.py +0 -30
  436. catalystwan/models/policy/list/site.py +0 -34
  437. catalystwan/models/policy/list/sla.py +0 -77
  438. catalystwan/models/policy/list/supervisory_disconnect.py +0 -62
  439. catalystwan/models/policy/list/threat_grid_api_key.py +0 -32
  440. catalystwan/models/policy/list/tloc.py +0 -32
  441. catalystwan/models/policy/list/translation_profile.py +0 -32
  442. catalystwan/models/policy/list/translation_rules.py +0 -29
  443. catalystwan/models/policy/list/trunkgroup.py +0 -56
  444. catalystwan/models/policy/list/umbrella_data.py +0 -30
  445. catalystwan/models/policy/list/url.py +0 -39
  446. catalystwan/models/policy/list/vpn.py +0 -40
  447. catalystwan/models/policy/list/zone.py +0 -46
  448. catalystwan/models/policy/voice.py +0 -77
  449. catalystwan/models/settings.py +0 -41
  450. catalystwan/models/templates.py +0 -79
  451. catalystwan/tests/builders/test_report.py +0 -60
  452. catalystwan/tests/builders/uc_voice.py +0 -85
  453. catalystwan/tests/models/__init__.py +0 -0
  454. catalystwan/tests/models/configuration/feature_profile/sdwan/policy_object/security/test_url.py +0 -73
  455. catalystwan/tests/models/test_digital_interface.py +0 -56
  456. catalystwan/tests/templates/definitions/aaa_basic.json +0 -96
  457. catalystwan/tests/templates/definitions/aaa_complex.json +0 -464
  458. catalystwan/tests/templates/definitions/cisco_aaa_complex.json +0 -361
  459. catalystwan/tests/templates/definitions/cisco_logging_complex.json +0 -268
  460. catalystwan/tests/templates/definitions/cisco_ntp_complex.json +0 -143
  461. catalystwan/tests/templates/definitions/cisco_omp_complex.json +0 -175
  462. catalystwan/tests/templates/definitions/cisco_ospf_complex.json +0 -302
  463. catalystwan/tests/templates/definitions/cisco_sig.json +0 -405
  464. catalystwan/tests/templates/definitions/cisco_snmp_complex.json +0 -258
  465. catalystwan/tests/templates/definitions/cisco_system_complex.json +0 -502
  466. catalystwan/tests/templates/definitions/cisco_vpn_interface_complex.json +0 -821
  467. catalystwan/tests/templates/definitions/omp_vsmart_1.json +0 -26
  468. catalystwan/tests/templates/definitions/omp_vsmart_complex.json +0 -73
  469. catalystwan/tests/templates/definitions/security_vsmart_complex.json +0 -24
  470. catalystwan/tests/templates/definitions/system_vsmart_complex.json +0 -193
  471. catalystwan/tests/templates/definitions/vpn_vsmart_basic.json +0 -17
  472. catalystwan/tests/templates/definitions/vpn_vsmart_complex.json +0 -179
  473. catalystwan/tests/templates/definitions/vpn_vsmart_interface_basic.json +0 -42
  474. catalystwan/tests/templates/definitions/vpn_vsmart_interface_complex.json +0 -208
  475. catalystwan/tests/templates/models/aaa.py +0 -106
  476. catalystwan/tests/templates/models/cisco_logging.py +0 -65
  477. catalystwan/tests/templates/models/cisco_ntp.py +0 -17
  478. catalystwan/tests/templates/models/cisco_omp.py +0 -37
  479. catalystwan/tests/templates/models/cisco_ospf.py +0 -60
  480. catalystwan/tests/templates/models/cisco_secure_internet_gateway.py +0 -95
  481. catalystwan/tests/templates/models/cisco_snmp.py +0 -40
  482. catalystwan/tests/templates/models/cisco_vpn_interface.py +0 -200
  483. catalystwan/tests/templates/models/security_vsmart.py +0 -11
  484. catalystwan/tests/templates/models/system_vsmart.py +0 -37
  485. catalystwan/tests/templates/models/vpn_vsmart.py +0 -32
  486. catalystwan/tests/templates/models/vpn_vsmart_interface.py +0 -54
  487. catalystwan/tests/templates/schemas/aaa.json +0 -1096
  488. catalystwan/tests/templates/schemas/cisco_logging.json +0 -577
  489. catalystwan/tests/templates/schemas/cisco_ntp.json +0 -265
  490. catalystwan/tests/templates/schemas/cisco_omp.json +0 -479
  491. catalystwan/tests/templates/schemas/cisco_ospf.json +0 -908
  492. catalystwan/tests/templates/schemas/cisco_secure_internet_gateway.json +0 -1520
  493. catalystwan/tests/templates/schemas/cisco_snmp.json +0 -561
  494. catalystwan/tests/templates/schemas/cisco_vpn_interface.json +0 -3348
  495. catalystwan/tests/templates/schemas/security-vsmart.json +0 -58
  496. catalystwan/tests/templates/schemas/system-vsmart.json +0 -2585
  497. catalystwan/tests/templates/schemas/vpn-vsmart-interface.json +0 -859
  498. catalystwan/tests/templates/schemas/vpn-vsmart.json +0 -445
  499. catalystwan/tests/templates/test_find_template_values_2.py +0 -193
  500. catalystwan/tests/test_feature_profile_api.py +0 -282
  501. catalystwan/tests/test_models_common.py +0 -53
  502. catalystwan/utils/model.py +0 -48
  503. catalystwan/utils/persona.py +0 -5
  504. catalystwan/utils/type_check.py +0 -22
  505. catalystwan/workflows/backup_restore_device_templates.py +0 -467
  506. catalystwan-0.41.2.dev9.dist-info/RECORD +0 -641
  507. /catalystwan/tests/templates/definitions/{cisco_banner.json → banner_1.json} +0 -0
  508. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/LICENSE +0 -0
  509. {catalystwan-0.41.2.dev9.dist-info → catalystwan-0.41.3.dist-info}/WHEEL +0 -0
@@ -1,102 +1,88 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
+ from enum import Enum
3
4
  from pathlib import Path
4
- from typing import ClassVar, List, Literal, Optional
5
+ from typing import ClassVar, List, Optional
5
6
 
6
7
  from pydantic import ConfigDict, Field
7
8
 
8
9
  from catalystwan.api.templates.bool_str import BoolStr
9
10
  from catalystwan.api.templates.feature_template import FeatureTemplate, FeatureTemplateValidator
10
11
 
11
- Authorization = Literal["read-only"]
12
- SecurityLevel = Literal["no-auth-no-priv", "auth-no-priv", "auth-priv"]
13
- Auth = Literal["md5", "sha"]
14
- Priv = Literal["aes-cfb-128", "aes-256-cfb-128"]
15
-
16
12
 
17
13
  class Oid(FeatureTemplateValidator):
18
- id: str = Field(description="The OID (Object Identifier) to include or exclude in the view")
19
- exclude: Optional[BoolStr] = Field(
20
- default=None, description="Indicates whether the OID should be excluded from the view"
21
- )
14
+ id: str
15
+ exclude: Optional[BoolStr] = None
22
16
 
23
17
 
24
18
  class View(FeatureTemplateValidator):
25
- name: str = Field(description="The name of the SNMP view")
26
- oid: Optional[List[Oid]] = Field(default=None, description="List of OIDs to include or exclude in the view")
19
+ name: str
20
+ oid: Optional[List[Oid]] = None
21
+
22
+
23
+ class Authorization(str, Enum):
24
+ READ_ONLY = "read-only"
27
25
 
28
26
 
29
27
  class Community(FeatureTemplateValidator):
30
- name: str = Field(description="The name of the SNMP community")
31
- view: str = Field(description="The SNMP view associated with the community")
32
- authorization: Authorization = Field(description="The authorization level of the community")
28
+ name: str
29
+ view: str
30
+ authorization: Authorization
31
+
32
+
33
+ class SecurityLevel(str, Enum):
34
+ NOAUTHNOPRIV = "no-auth-no-priv"
35
+ AUTHNOPRIV = "auth-no-priv"
36
+ AUTHPRIV = "auth-priv"
33
37
 
34
38
 
35
39
  class Group(FeatureTemplateValidator):
36
- name: str = Field(description="The name of the SNMP group")
37
- security_level: SecurityLevel = Field(
38
- description="The security level associated with the group", json_schema_extra={"vmanage_key": "security-level"}
39
- )
40
- view: str = Field(description="The SNMP view associated with the group")
40
+ name: str
41
+ security_level: SecurityLevel = Field(json_schema_extra={"vmanage_key": "security-level"})
42
+ view: str
41
43
  model_config = ConfigDict(populate_by_name=True)
42
44
 
43
45
 
46
+ class Auth(str, Enum):
47
+ MD5 = "md5"
48
+ SHA = "sha"
49
+
50
+
51
+ class Priv(str, Enum):
52
+ AES_CFB_128 = "aes-cfb-128"
53
+
54
+
44
55
  class User(FeatureTemplateValidator):
45
- name: str = Field(description="The name of the SNMP user")
46
- auth: Optional[Auth] = Field(default=None, description="The authentication protocol used")
47
- auth_password: Optional[str] = Field(
48
- default=None, description="The password for authentication", json_schema_extra={"vmanage_key": "auth-password"}
49
- )
50
- priv: Optional[Priv] = Field(default=None, description="The privacy (encryption) protocol used")
51
- priv_password: Optional[str] = Field(
52
- default=None, description="The password for privacy", json_schema_extra={"vmanage_key": "priv-password"}
53
- )
54
- group: str = Field(description="The group to which the user belongs")
56
+ name: str
57
+ auth: Optional[Auth] = None
58
+ auth_password: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "auth-password"})
59
+ priv: Optional[Priv] = None
60
+ priv_password: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "priv-password"})
61
+ group: str
55
62
  model_config = ConfigDict(populate_by_name=True)
56
63
 
57
64
 
58
65
  class Target(FeatureTemplateValidator):
59
- vpn_id: int = Field(
60
- description="The VPN ID where the SNMP target resides", json_schema_extra={"vmanage_key": "vpn-id"}
61
- )
62
- ip: str = Field(description="The IP address of the SNMP target")
63
- port: int = Field(description="The port number for the SNMP target")
64
- community_name: Optional[str] = Field(
65
- default=None,
66
- description="The community name for the SNMP target",
67
- json_schema_extra={"vmanage_key": "community-name"},
68
- )
69
- user: Optional[str] = Field(default=None, description="The user name for the SNMP target")
70
- source_interface: Optional[str] = Field(
71
- default=None,
72
- description="The source interface for sending SNMP traps",
73
- json_schema_extra={"vmanage_key": "source-interface"},
74
- )
66
+ vpn_id: int = Field(json_schema_extra={"vmanage_key": "vpn-id"})
67
+ ip: str
68
+ port: int
69
+ community_name: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "community-name"})
70
+ user: Optional[str] = None
71
+ source_interface: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "source-interface"})
75
72
  model_config = ConfigDict(populate_by_name=True)
76
73
 
77
74
 
78
75
  class CiscoSNMPModel(FeatureTemplate):
79
76
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
80
- _docs_description: str = "Cisco SNMP Feature Template configuration"
81
-
82
- shutdown: Optional[BoolStr] = Field(
83
- default=True, description="Indicates whether SNMP is administratively shut down"
84
- )
85
- contact: Optional[str] = Field(default=None, description="The contact information for the SNMP administrator")
86
- location: Optional[str] = Field(default=None, description="The physical location information for the SNMP agent")
87
- view: Optional[List[View]] = Field(default=None, description="List of SNMP views for controlling access to OIDs")
88
- community: Optional[List[Community]] = Field(
89
- default=None, description="List of SNMP communities for different access rights"
90
- )
91
- group: Optional[List[Group]] = Field(
92
- default=None, description="List of SNMP groups defining security models and access rights"
93
- )
94
- user: Optional[List[User]] = Field(
95
- default=None, description="List of SNMP users with authentication and privacy configurations"
96
- )
97
- target: Optional[List[Target]] = Field(
98
- default=None, json_schema_extra={"data_path": ["trap"]}, description="List of SNMP targets for sending traps"
99
- )
77
+
78
+ shutdown: Optional[BoolStr] = True
79
+ contact: Optional[str] = None
80
+ location: Optional[str] = None
81
+ view: Optional[List[View]] = None
82
+ community: Optional[List[Community]] = None
83
+ group: Optional[List[Group]] = None
84
+ user: Optional[List[User]] = None
85
+ target: Optional[List[Target]] = Field(default=None, json_schema_extra={"data_path": ["trap"]})
100
86
 
101
87
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
102
88
  type: ClassVar[str] = "cisco_snmp"
@@ -1,318 +1,209 @@
1
1
  # Copyright 2023 Cisco Systems, Inc. and its affiliates
2
2
 
3
+ from enum import Enum
3
4
  from pathlib import Path
4
- from typing import ClassVar, List, Literal, Optional, Union
5
+ from typing import ClassVar, List, Optional
5
6
 
6
7
  from pydantic import ConfigDict, Field
7
8
 
8
9
  from catalystwan.api.templates.bool_str import BoolStr
9
10
  from catalystwan.api.templates.device_variable import DeviceVariable
10
11
  from catalystwan.api.templates.feature_template import FeatureTemplate, FeatureTemplateValidator
11
- from catalystwan.models.common import Protocol, Timezone
12
-
13
- SiteType = Literal["type-1", "type-2", "type-3", "cloud", "branch", "br", "spoke"]
14
- ConsoleBaudRate = Literal["1200", "2400", "4800", "9600", "19200", "38400", "57600", "115200"]
15
- Boolean = Literal["or", "and"]
16
- Type = Literal["interface", "static-route"]
17
- Role = Literal["edge-router", "border-router"]
18
- EnableMrfMigration = Literal["enabled", "enabled-from-bgp-core"]
19
- Epfr = Literal["disabled", "aggressive", "moderate", "conservative"]
12
+ from catalystwan.utils.timezone import Timezone
20
13
 
21
14
 
22
15
  class MobileNumber(FeatureTemplateValidator):
23
- number: str = Field(description="The mobile phone number used for notification or security purposes.")
16
+ number: str
17
+
18
+
19
+ class SiteType(str, Enum):
20
+ TYPE_1 = "type-1"
21
+ TYPE_2 = "type-2"
22
+ TYPE_3 = "type-3"
23
+ CLOUD = "cloud"
24
+ BRANCH = "branch"
25
+ BR = "br"
26
+ SPOKE = "spoke"
27
+
28
+
29
+ class ConsoleBaudRate(str, Enum):
30
+ _1200 = "1200"
31
+ _2400 = "2400"
32
+ _4800 = "4800"
33
+ _9600 = "9600"
34
+ _19200 = "19200"
35
+ _38400 = "38400"
36
+ _57600 = "57600"
37
+ _115200 = "115200"
38
+
39
+
40
+ class Protocol(str, Enum):
41
+ TCP = "tcp"
42
+ UDP = "udp"
43
+
44
+
45
+ class Boolean(str, Enum):
46
+ OR = "or"
47
+ AND = "and"
48
+
49
+
50
+ class Type(str, Enum):
51
+ INTERFACE = "interface"
52
+ STATIC_ROUTE = "static-route"
24
53
 
25
54
 
26
55
  class Tracker(FeatureTemplateValidator):
27
- name: str = Field(description="Name for the Tracker")
28
- endpoint_ip: Optional[str] = Field(
29
- default=None,
30
- description="The IP address of the endpoint to track.",
31
- json_schema_extra={"vmanage_key": "endpoint-ip"},
32
- )
56
+ name: str
57
+ endpoint_ip: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "endpoint-ip"})
33
58
  endpoint_ip_transport_port: Optional[str] = Field(
34
- default=None,
35
- description="The transport port of the endpoint IP address.",
36
- json_schema_extra={"vmanage_key": "endpoint-ip", "data_path": ["endpoint-ip-transport-port"]},
37
- )
38
- protocol: Optional[Protocol] = Field(
39
- default=None,
40
- description="The protocol used for the tracker (TCP or UDP).",
41
- json_schema_extra={"data_path": ["endpoint-ip-transport-port"]},
42
- )
43
- port: Optional[int] = Field(
44
- default=None,
45
- description="The port number used for the tracker.",
46
- json_schema_extra={"data_path": ["endpoint-ip-transport-port"]},
47
- )
48
- endpoint_dns_name: Optional[str] = Field(
49
- default=None,
50
- description="The DNS name of the endpoint to track.",
51
- json_schema_extra={"vmanage_key": "endpoint-dns-name"},
52
- )
53
- endpoint_api_url: Optional[str] = Field(
54
- default=None,
55
- description="The API URL of the endpoint to track.",
56
- json_schema_extra={"vmanage_key": "endpoint-api-url"},
57
- )
58
- elements: Optional[List[str]] = Field(default=None, description="A list of elements to track.")
59
- boolean: Optional[Boolean] = Field(
60
- default="or", description="The boolean condition to use when evaluating multiple elements."
61
- )
62
- threshold: Optional[int] = Field(default=300, description="The threshold for triggering the tracker.")
63
- interval: Optional[int] = Field(default=60, description="The interval at which the tracker checks the elements.")
64
- multiplier: Optional[int] = Field(default=3, description="The multiplier used for determining the loss threshold.")
65
- type: Optional[Type] = Field(default="interface", description="The type of tracker (interface or static route).")
66
-
59
+ default=None, json_schema_extra={"vmanage_key": "endpoint-ip", "data_path": ["endpoint-ip-transport-port"]}
60
+ )
61
+ protocol: Optional[Protocol] = Field(default=None, json_schema_extra={"data_path": ["endpoint-ip-transport-port"]})
62
+ port: Optional[int] = Field(default=None, json_schema_extra={"data_path": ["endpoint-ip-transport-port"]})
63
+ endpoint_dns_name: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "endpoint-dns-name"})
64
+ endpoint_api_url: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "endpoint-api-url"})
65
+ elements: Optional[List[str]] = None
66
+ boolean: Optional[Boolean] = Boolean.OR
67
+ threshold: Optional[int] = 300
68
+ interval: Optional[int] = 60
69
+ multiplier: Optional[int] = 3
70
+ type: Optional[Type] = Type.INTERFACE
67
71
  model_config = ConfigDict(populate_by_name=True)
68
72
 
69
73
 
70
74
  class Object(FeatureTemplateValidator):
71
- number: int = Field(description="The unique identifier for the object.")
75
+ number: int
72
76
 
73
77
 
74
78
  class ObjectTrack(FeatureTemplateValidator):
75
- object_number: int = Field(
76
- description="The tracking object number.", json_schema_extra={"vmanage_key": "object-number"}
77
- )
78
- interface: str = Field(description="The name of the interface to track.")
79
- sig: str = Field(description="The signature associated with the tracking object.")
80
- ip: str = Field(description="The IP address used for tracking.")
81
- mask: Optional[str] = Field(
82
- default="0.0.0.0", description="The subnet mask associated with the IP address for tracking."
83
- )
84
- vpn: int = Field(description="The VPN instance associated with the tracking object.")
85
- object: List[Object] = Field(description="A list of objects related to the tracking.")
86
- boolean: Boolean = Field(description="The boolean condition to use when evaluating multiple objects.")
79
+ object_number: int = Field(json_schema_extra={"vmanage_key": "object-number"})
80
+ interface: str
81
+ sig: str
82
+ ip: str
83
+ mask: Optional[str] = "0.0.0.0"
84
+ vpn: int
85
+ object: List[Object]
86
+ boolean: Boolean
87
87
  model_config = ConfigDict(populate_by_name=True)
88
88
 
89
89
 
90
+ class Role(str, Enum):
91
+ EDGE_ROUTER = "edge-router"
92
+ BORDER_ROUTER = "border-router"
93
+
94
+
90
95
  class AffinityPerVrf(FeatureTemplateValidator):
91
96
  affinity_group_number: Optional[int] = Field(
92
- default=None,
93
- description="The affinity group number for VRF binding.",
94
- json_schema_extra={"vmanage_key": "affinity-group-number"},
95
- )
96
- vrf_range: Optional[str] = Field(
97
- default=None,
98
- description="The range of VRFs associated with the affinity group.",
99
- json_schema_extra={"vmanage_key": "vrf-range"},
97
+ default=None, json_schema_extra={"vmanage_key": "affinity-group-number"}
100
98
  )
99
+ vrf_range: Optional[str] = Field(default=None, json_schema_extra={"vmanage_key": "vrf-range"})
101
100
  model_config = ConfigDict(populate_by_name=True)
102
101
 
103
102
 
103
+ class EnableMrfMigration(str, Enum):
104
+ ENABLE = "enabled"
105
+ ENABLE_FROM_BGP_CORE = "enabled-from-bgp-core"
106
+
107
+
104
108
  class Vrf(FeatureTemplateValidator):
105
- vrf_id: int = Field(
106
- description="The VRF (VPN Routing and Forwarding) instance ID.", json_schema_extra={"vmanage_key": "vrf-id"}
107
- )
109
+ vrf_id: int = Field(json_schema_extra={"vmanage_key": "vrf-id"})
108
110
  gateway_preference: Optional[List[int]] = Field(
109
- default=None,
110
- description="List of affinity group preferences for VRF",
111
- json_schema_extra={"vmanage_key": "gateway-preference"},
111
+ default=None, json_schema_extra={"vmanage_key": "gateway-preference"}
112
112
  )
113
113
  model_config = ConfigDict(populate_by_name=True)
114
114
 
115
115
 
116
+ class Epfr(str, Enum):
117
+ DISABLED = "disabled"
118
+ AGGRESSIVE = "aggressive"
119
+ MODERATE = "moderate"
120
+ CONSERVATIVE = "conservative"
121
+
122
+
116
123
  class CiscoSystemModel(FeatureTemplate):
117
124
  model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
118
- _docs_description: str = "Cisco System configuration settings for SD-WAN devices."
119
125
 
120
- timezone: Optional[Timezone] = Field(
121
- default=None, description="The timezone setting for the system.", json_schema_extra={"data_path": ["clock"]}
122
- )
123
- description: Optional[str] = Field(default=None, description="Set a text description of the device")
126
+ timezone: Optional[Timezone] = Field(default=None, json_schema_extra={"data_path": ["clock"]})
124
127
  hostname: DeviceVariable = Field(
125
128
  default=DeviceVariable(name="system_host_name"),
126
129
  validate_default=True,
127
- description="The hostname for the device.",
128
130
  json_schema_extra={"vmanage_key": "host-name"},
129
131
  )
130
- location: Optional[str] = Field(default=None, description="The physical location of the device.")
131
- latitude: Optional[float] = Field(
132
- default=None,
133
- description="The latitude coordinate for the device's location.",
134
- json_schema_extra={"data_path": ["gps-location"]},
135
- )
136
- longitude: Optional[float] = Field(
137
- default=None,
138
- description="The longitude coordinate for the device's location.",
139
- json_schema_extra={"data_path": ["gps-location"]},
140
- )
141
- range: Optional[int] = Field(
142
- default=100,
143
- description="The range for geo-fencing feature.",
144
- json_schema_extra={"data_path": ["gps-location", "geo-fencing"]},
145
- )
132
+ location: Optional[str] = None
133
+ latitude: Optional[float] = Field(default=None, json_schema_extra={"data_path": ["gps-location"]})
134
+ longitude: Optional[float] = Field(default=None, json_schema_extra={"data_path": ["gps-location"]})
135
+ range: Optional[int] = Field(100, json_schema_extra={"data_path": ["gps-location", "geo-fencing"]})
146
136
  enable_fencing: Optional[BoolStr] = Field(
147
- default=None,
148
- description="Enable or disable geo-fencing.",
149
- json_schema_extra={"data_path": ["gps-location", "geo-fencing"], "vmanage_key": "enable"},
137
+ default=None, json_schema_extra={"data_path": ["gps-location", "geo-fencing"], "vmanage_key": "enable"}
150
138
  )
151
139
  mobile_number: Optional[List[MobileNumber]] = Field(
152
140
  default=None,
153
- description="List of mobile numbers for SMS notifications.",
154
141
  json_schema_extra={"vmanage_key": "mobile-number", "data_path": ["gps-location", "geo-fencing", "sms"]},
155
142
  )
156
143
  enable_sms: Optional[BoolStr] = Field(
157
- default=False,
158
- description="Enable or disable SMS notifications.",
159
- json_schema_extra={"data_path": ["gps-location", "geo-fencing", "sms"], "vmanage_key": "enable"},
160
- )
161
- device_groups: Optional[List[str]] = Field(
162
- default=None,
163
- description="List of device groups the device belongs to.",
164
- json_schema_extra={"vmanage_key": "device-groups"},
144
+ default=False, json_schema_extra={"data_path": ["gps-location", "geo-fencing", "sms"], "vmanage_key": "enable"}
165
145
  )
146
+ device_groups: Optional[List[str]] = Field(default=None, json_schema_extra={"vmanage_key": "device-groups"})
166
147
  controller_group_list: Optional[List[int]] = Field(
167
- default=None,
168
- description="List of controller groups the device is associated with.",
169
- json_schema_extra={"vmanage_key": "controller-group-list"},
148
+ default=None, json_schema_extra={"vmanage_key": "controller-group-list"}
170
149
  )
171
150
  system_ip: DeviceVariable = Field(
172
- default=DeviceVariable(name="system_system_ip"),
173
- description="The system IP address of the device.",
174
- json_schema_extra={"vmanage_key": "system-ip"},
175
- )
176
- overlay_id: Optional[int] = Field(
177
- default=None, description="The overlay ID of the device.", json_schema_extra={"vmanage_key": "overlay-id"}
178
- )
179
- site_id: Union[int, DeviceVariable] = Field(
180
- default=DeviceVariable(name="system_site_id"),
181
- description="The site ID of the device.",
182
- json_schema_extra={"vmanage_key": "site-id"},
183
- )
184
- site_type: Optional[List[SiteType]] = Field(
185
- default=None,
186
- description="The site type classification for the device.",
187
- json_schema_extra={"vmanage_key": "site-type"},
188
- )
189
- port_offset: Optional[int] = Field(
190
- default=None, description="The port offset for the device.", json_schema_extra={"vmanage_key": "port-offset"}
191
- )
192
- port_hop: Optional[BoolStr] = Field(
193
- default=None, description="Enable or disable port hopping.", json_schema_extra={"vmanage_key": "port-hop"}
194
- )
195
- control_session_pps: Optional[int] = Field(
196
- default=None,
197
- description="Control session packets per second setting.",
198
- json_schema_extra={"vmanage_key": "control-session-pps"},
199
- )
200
- track_transport: Optional[BoolStr] = Field(
201
- default=None,
202
- description="Enable or disable transport tracking.",
203
- json_schema_extra={"vmanage_key": "track-transport"},
204
- )
205
- track_interface_tag: Optional[int] = Field(
206
- default=None,
207
- description="The tag of the interface to be tracked.",
208
- json_schema_extra={"vmanage_key": "track-interface-tag"},
209
- )
210
-
151
+ default=DeviceVariable(name="system_system_ip"), json_schema_extra={"vmanage_key": "system-ip"}
152
+ )
153
+ overlay_id: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "overlay-id"})
154
+ site_id: DeviceVariable = Field(
155
+ default=DeviceVariable(name="system_site_id"), json_schema_extra={"vmanage_key": "site-id"}
156
+ )
157
+ site_type: Optional[List[SiteType]] = Field(default=None, json_schema_extra={"vmanage_key": "site-type"})
158
+ port_offset: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "port-offset"})
159
+ port_hop: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "port-hop"})
160
+ control_session_pps: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "control-session-pps"})
161
+ track_transport: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "track-transport"})
162
+ track_interface_tag: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "track-interface-tag"})
211
163
  console_baud_rate: Optional[ConsoleBaudRate] = Field(
212
- default=None,
213
- description="The console baud rate setting for the device.",
214
- json_schema_extra={"vmanage_key": "console-baud-rate"},
215
- )
216
- max_omp_sessions: Optional[int] = Field(
217
- default=None,
218
- description="The maximum number of OMP (Overlay Management Protocol) sessions.",
219
- json_schema_extra={"vmanage_key": "max-omp-sessions"},
220
- )
221
- multi_tenant: Optional[BoolStr] = Field(
222
- default=None,
223
- description="Enable or disable multi-tenant support.",
224
- json_schema_extra={"vmanage_key": "multi-tenant"},
164
+ default=None, json_schema_extra={"vmanage_key": "console-baud-rate"}
225
165
  )
166
+ max_omp_sessions: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "max-omp-sessions"})
167
+ multi_tenant: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "multi-tenant"})
226
168
  track_default_gateway: Optional[BoolStr] = Field(
227
- default=None,
228
- description="Enable or disable default gateway tracking.",
229
- json_schema_extra={"vmanage_key": "track-default-gateway"},
169
+ default=None, json_schema_extra={"vmanage_key": "track-default-gateway"}
230
170
  )
231
171
  admin_tech_on_failure: Optional[BoolStr] = Field(
232
- default=None,
233
- description="Enable or disable automatic generation of admin technical details on failure.",
234
- json_schema_extra={"vmanage_key": "admin-tech-on-failure"},
172
+ default=None, json_schema_extra={"vmanage_key": "admin-tech-on-failure"}
235
173
  )
236
174
  enable_tunnel: Optional[BoolStr] = Field(
237
- default=None,
238
- description="Enable or disable tunnel functionality.",
239
- json_schema_extra={"vmanage_key": "enable", "data_path": ["on-demand"]},
240
- )
241
- idle_timeout: Optional[int] = Field(
242
- default=None,
243
- description="The idle timeout setting for tunnels.",
244
- json_schema_extra={"vmanage_key": "idle-timeout"},
175
+ default=None, json_schema_extra={"vmanage_key": "enable", "data_path": ["on-demand"]}
245
176
  )
177
+ idle_timeout: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "idle-timeout"})
246
178
  on_demand_idle_timeout_min: Optional[int] = Field(
247
- default=None,
248
- description="The minimum idle timeout for on-demand tunnels.",
249
- json_schema_extra={"vmanage_key": "idle-timeout", "data_path": ["on-demand"]},
250
- )
251
- tracker: Optional[List[Tracker]] = Field(default=None, description="List of tracker configurations.")
252
- object_track: Optional[List[ObjectTrack]] = Field(
253
- default=None,
254
- description="List of object tracking configurations.",
255
- json_schema_extra={"vmanage_key": "object-track"},
256
- )
257
- region_id: Optional[int] = Field(
258
- default=None, description="The region ID of the device.", json_schema_extra={"vmanage_key": "region-id"}
259
- )
260
- secondary_region: Optional[int] = Field(
261
- default=None,
262
- description="The secondary region ID of the device.",
263
- json_schema_extra={"vmanage_key": "secondary-region"},
264
- )
265
- role: Optional[Role] = Field(
266
- default=None,
267
- description="The role of the device in the network.",
179
+ default=None, json_schema_extra={"vmanage_key": "idle-timeout", "data_path": ["on-demand"]}
268
180
  )
181
+ tracker: Optional[List[Tracker]] = None
182
+ object_track: Optional[List[ObjectTrack]] = Field(default=None, json_schema_extra={"vmanage_key": "object-track"})
183
+ region_id: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "region-id"})
184
+ secondary_region: Optional[int] = Field(default=None, json_schema_extra={"vmanage_key": "secondary-region"})
185
+ role: Optional[Role] = None
269
186
  affinity_group_number: Optional[int] = Field(
270
- default=None,
271
- description="The affinity group number for VRF binding.",
272
- json_schema_extra={"vmanage_key": "affinity-group-number", "data_path": ["affinity-group"]},
273
- )
274
- preference: Optional[List[int]] = Field(
275
- default=None,
276
- description="List of affinity group preferences.",
277
- json_schema_extra={"data_path": ["affinity-group"]},
278
- )
279
- preference_auto: Optional[BoolStr] = Field(
280
- default=None,
281
- description="Enable or disable automatic preference setting for affinity groups.",
282
- json_schema_extra={"vmanage_key": "preference-auto", "data_path": ["affinity-group"]},
187
+ default=None, json_schema_extra={"vmanage_key": "affinity-group-number", "data_path": ["affinity-group"]}
283
188
  )
189
+ preference: Optional[List[int]] = Field(default=None, json_schema_extra={"data_path": ["affinity-group"]})
190
+ preference_auto: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "preference-auto"})
284
191
  affinity_per_vrf: Optional[List[AffinityPerVrf]] = Field(
285
- default=None,
286
- description="List of affinity configurations per VRF.",
287
- json_schema_extra={"vmanage_key": "affinity-per-vrf", "data_path": ["affinity-group"]},
288
- )
289
- transport_gateway: Optional[BoolStr] = Field(
290
- default=None,
291
- description="Enable or disable the transport gateway feature.",
292
- json_schema_extra={"vmanage_key": "transport-gateway"},
192
+ default=None, json_schema_extra={"vmanage_key": "affinity-per-vrf"}
293
193
  )
194
+ transport_gateway: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "transport-gateway"})
294
195
  enable_mrf_migration: Optional[EnableMrfMigration] = Field(
295
- default=None,
296
- description="Enable Multicast Routing Framework (MRF) migration settings.",
297
- json_schema_extra={"vmanage_key": "enable-mrf-migration"},
196
+ default=None, json_schema_extra={"vmanage_key": "enable-mrf-migration"}
298
197
  )
299
198
  migration_bgp_community: Optional[int] = Field(
300
- default=None,
301
- description="BGP community value for MRF migration.",
302
- json_schema_extra={"vmanage_key": "migration-bgp-community"},
199
+ default=None, json_schema_extra={"vmanage_key": "migration-bgp-community"}
303
200
  )
304
201
  enable_management_region: Optional[BoolStr] = Field(
305
- default=None,
306
- description="Enable or disable management region configuration.",
307
- json_schema_extra={"vmanage_key": "enable-management-region"},
308
- )
309
- vrf: Optional[List[Vrf]] = Field(default=None, description="List of VRF configurations.")
310
- management_gateway: Optional[BoolStr] = Field(
311
- default=None,
312
- description="Enable or disable the management gateway feature.",
313
- json_schema_extra={"vmanage_key": "management-gateway"},
202
+ default=None, json_schema_extra={"vmanage_key": "enable-management-region"}
314
203
  )
315
- epfr: Optional[Epfr] = Field(default=None, description="Edge Policy-based Framework Routing (EPFR) setting.")
204
+ vrf: Optional[List[Vrf]] = None
205
+ management_gateway: Optional[BoolStr] = Field(default=None, json_schema_extra={"vmanage_key": "management-gateway"})
206
+ epfr: Optional[Epfr] = None
316
207
 
317
208
  payload_path: ClassVar[Path] = Path(__file__).parent / "DEPRECATED"
318
209
  type: ClassVar[str] = "cisco_system"