Skip to content

Commit bbbe623

Browse files
authored
Merge pull request #6 from cisco-en-programmability/fix-ethernet-serialization
dev: Fix ethernet serialization
2 parents feb1515 + 5d3a0af commit bbbe623

File tree

20 files changed

+91
-113
lines changed

20 files changed

+91
-113
lines changed

catalystwan/api/templates/models/aaa_model.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class RadiusServer(FeatureTemplateValidator):
131131
description="The accounting port for the RADIUS server",
132132
)
133133
vpn: Optional[str] = Field(
134-
default=0,
134+
default="0",
135135
json_schema_extra={"vmanage_key": "vpn"},
136136
description="Set VPN in which RADIUS server is located",
137137
)
@@ -159,7 +159,7 @@ class TacacsServer(FeatureTemplateValidator):
159159
description="The authentication port for the TACACS+ server",
160160
)
161161
vpn: Optional[str] = Field(
162-
default=0,
162+
default="0",
163163
json_schema_extra={"vmanage_key": "vpn"},
164164
description="Set VPN in which TACACS+ server is located",
165165
)
@@ -185,7 +185,7 @@ class TaskPermissions(FeatureTemplateValidator):
185185
description="Select the task to set privileges for",
186186
)
187187
permission: List[TaskPermission] = Field(
188-
default="pap",
188+
default=["read"], # type: ignore
189189
json_schema_extra={
190190
"vmanage_key": "permission",
191191
},
@@ -207,7 +207,7 @@ class UserGroup(FeatureTemplateValidator):
207207
json_schema_extra={"vmanage_key": "name"},
208208
description="Set name of user group",
209209
)
210-
task: List[TaskPermissions] = Field(
210+
task: Optional[List[TaskPermissions]] = Field(
211211
default=None,
212212
json_schema_extra={"vmanage_key": "task", "priority_order": ["mode", "permission"]},
213213
description="Set the user group's tasks and task privileges. Skipping tasks sets all as read and write",
@@ -220,7 +220,7 @@ class AAAModel(FeatureTemplate):
220220

221221
auth_order: Optional[List[AuthenticationOrder]] = Field(
222222
validate_default=True,
223-
default=["local", "radius", "tacacs"],
223+
default=["local", "radius", "tacacs"], # type: ignore
224224
json_schema_extra={"vmanage_key": "auth-order", "data_path": ["aaa"]},
225225
description="ServerGroups authentication order to user access",
226226
)

catalystwan/api/templates/models/cisco_aaa_model.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class RadiusGroup(FeatureTemplateValidator):
138138
json_schema_extra={"vmanage_key": "group-name"},
139139
description="The name of the RADIUS group",
140140
)
141-
vpn: Optional[int] = Field(description="The VPN ID for the RADIUS group")
141+
vpn: Optional[int] = Field(default=None, description="The VPN ID for the RADIUS group")
142142
source_interface: Optional[str] = Field(
143143
json_schema_extra={"vmanage_key": "source-interface"},
144144
description="The source interface for the RADIUS group",
@@ -154,7 +154,6 @@ class RadiusVPN(FeatureTemplateValidator):
154154
},
155155
)
156156
server_key: str = Field(
157-
default=None,
158157
description="Specify a RADIUS client server-key",
159158
json_schema_extra={
160159
"vmanage_key": "server-key",

catalystwan/api/templates/models/cisco_system.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright 2023 Cisco Systems, Inc. and its affiliates
22

33
from pathlib import Path
4-
from typing import ClassVar, List, Literal, Optional
4+
from typing import ClassVar, List, Literal, Optional, Union
55

66
from pydantic import ConfigDict, Field
77

@@ -176,7 +176,7 @@ class CiscoSystemModel(FeatureTemplate):
176176
overlay_id: Optional[int] = Field(
177177
default=None, description="The overlay ID of the device.", json_schema_extra={"vmanage_key": "overlay-id"}
178178
)
179-
site_id: int = Field(
179+
site_id: Union[int, DeviceVariable] = Field(
180180
default=DeviceVariable(name="system_site_id"),
181181
description="The site ID of the device.",
182182
json_schema_extra={"vmanage_key": "site-id"},

catalystwan/api/templates/models/cisco_vpn_model.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,6 @@ class Natpool(FeatureTemplateValidator):
260260
json_schema_extra={"vmanage_key": "prefix-length"},
261261
)
262262
range_start: str = Field(
263-
default=None,
264263
description="The starting IP address for the NAT pool range.",
265264
json_schema_extra={"vmanage_key": "range-start"},
266265
)

catalystwan/api/templates/models/system_vsmart_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class SystemVsmart(FeatureTemplate):
6868
description="Geographical longitude of the vSmart controller",
6969
)
7070
device_groups: List[str] = Field(
71-
default=None,
71+
default_factory=list,
7272
json_schema_extra={"vmanage_key": "device-groups"},
7373
description="Device group names for the vSmart controller",
7474
)

catalystwan/api/templates/models/vpn_vsmart_interface_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class VpnVsmartInterfaceModel(FeatureTemplate):
3030
model_config = ConfigDict(arbitrary_types_allowed=True, populate_by_name=True)
3131
_docs_description: str = "vSmart VPN Interface Feature Template configuration"
3232

33-
if_name: str = Field(
33+
if_name: Optional[str] = Field(
3434
default=None, description="The name of the interface.", json_schema_extra={"vmanage_key": "if-name"}
3535
)
3636
interface_description: Optional[str] = Field(

catalystwan/endpoints/configuration/software_actions.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ class RemoteServerInfo(BaseModel):
100100
class SoftwareRemoteServer(BaseModel):
101101
model_config = ConfigDict(populate_by_name=True)
102102

103-
filename: str = Field(default=None, serialization_alias="fileName", validation_alias="fileName")
104-
remote_server_id: str = Field(default=None, serialization_alias="remoteServerId", validation_alias="remoteServerId")
103+
filename: str = Field(serialization_alias="fileName", validation_alias="fileName")
104+
remote_server_id: str = Field(serialization_alias="remoteServerId", validation_alias="remoteServerId")
105105
smu_defect_id: Optional[str] = Field(
106106
default=None, serialization_alias="smuDefectId", validation_alias="smuDefectId"
107107
)
@@ -158,7 +158,9 @@ class SoftwareImageDetails(BaseModel):
158158
vnf_properties_json: Optional[str] = Field(
159159
default=None, serialization_alias="vnfPropertiesJson", validation_alias="vnfPropertiesJson"
160160
)
161-
remote_server_id: str = Field(default=None, serialization_alias="remoteServerId", validation_alias="remoteServerId")
161+
remote_server_id: Optional[str] = Field(
162+
default=None, serialization_alias="remoteServerId", validation_alias="remoteServerId"
163+
)
162164

163165

164166
class ConfigurationSoftwareActions(APIEndpoints):

catalystwan/endpoints/configuration_dashboard_status.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class Validation(BaseModel):
6161
device_id: Optional[str] = Field(default=None, serialization_alias="deviceID", validation_alias="deviceID")
6262
uuid: Optional[str] = Field(default=None, serialization_alias="uuid", validation_alias="uuid")
6363
rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid")
64-
status_id: str = Field(default=None, serialization_alias="statusId", validation_alias="statusId")
64+
status_id: str = Field(serialization_alias="statusId", validation_alias="statusId")
6565
process_id: Optional[str] = Field(default=None, serialization_alias="processId", validation_alias="processId")
6666
action_config: Optional[Union[str, Dict]] = Field(
6767
default=None, serialization_alias="actionConfig", validation_alias="actionConfig"
@@ -74,7 +74,7 @@ class Validation(BaseModel):
7474
request_status: Optional[str] = Field(
7575
default=None, serialization_alias="requestStatus", validation_alias="requestStatus"
7676
)
77-
status: OperationStatus = Field(default=None, serialization_alias="status", validation_alias="status")
77+
status: OperationStatus = Field(serialization_alias="status", validation_alias="status")
7878
order: Optional[int] = Field(default=None, serialization_alias="order", validation_alias="order")
7979

8080

catalystwan/models/common.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -678,15 +678,14 @@ def str_as_interface_list(val: Union[str, Sequence[InterfaceStr]]) -> Sequence[I
678678

679679
_PolicyModeType = Literal["security", "unified"]
680680

681+
681682
def parse_policy_mode(val: Optional[str]) -> _PolicyModeType:
682683
if isinstance(val, str) and val == "unified":
683684
return "unified"
684685
return "security"
685686

686-
PolicyModeType = Annotated[
687-
_PolicyModeType,
688-
BeforeValidator(parse_policy_mode)
689-
]
687+
688+
PolicyModeType = Annotated[_PolicyModeType, BeforeValidator(parse_policy_mode)]
690689

691690

692691
CoreRegion = Literal[

catalystwan/models/configuration/feature_profile/common.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,7 @@ class WANIPv4StaticRoute(BaseModel):
194194
gateway: Global[Literal["nextHop", "null0", "dhcp"]] = Field(
195195
default=Global(value="nextHop"), serialization_alias="gateway", validation_alias="gateway"
196196
)
197-
next_hops: Optional[List[NextHop]] = Field(
198-
default_factory=list, serialization_alias="nextHop", validation_alias="nextHop"
199-
)
197+
next_hops: Optional[List[NextHop]] = Field(default=None, serialization_alias="nextHop", validation_alias="nextHop")
200198
distance: Optional[Global[int]] = Field(default=None, serialization_alias="distance", validation_alias="distance")
201199

202200
def set_to_next_hop(

0 commit comments

Comments
 (0)