5
5
from datetime import datetime
6
6
from typing import Dict , List , Literal , Optional , Union
7
7
8
- from pydantic import BaseModel , Field , validator
8
+ from pydantic import BaseModel , Field , field_validator
9
9
10
10
11
11
class DocumentBaseModel (BaseModel ):
12
12
"""Base model for Mongo documents"""
13
13
14
14
id : str = Field (None , alias = "_id" )
15
- inserted_at : Optional [datetime ]
16
- updated_at : Optional [datetime ]
15
+ inserted_at : Optional [datetime ] = None
16
+ updated_at : Optional [datetime ] = None
17
17
18
- def dict (self , ** kwargs ) -> Dict :
18
+ def model_dump (self , ** kwargs ) -> Dict :
19
19
"""Return a dictionary representation of the model"""
20
- values = super ().dict (** kwargs )
20
+ values = super ().model_dump (** kwargs )
21
21
if "id" in values and values ["id" ]:
22
22
values ["_id" ] = values ["id" ]
23
23
if "exclude" in kwargs and "_id" in kwargs ["exclude" ]:
@@ -29,19 +29,19 @@ class CircuitScheduleDoc(BaseModel):
29
29
"""EVC circuit schedule model"""
30
30
31
31
id : str
32
- date : Optional [str ]
33
- frequency : Optional [str ]
34
- interval : Optional [int ]
32
+ date : Optional [str ] = None
33
+ frequency : Optional [str ] = None
34
+ interval : Optional [int ] = None
35
35
action : str
36
36
37
37
38
38
class TAGDoc (BaseModel ):
39
39
"""TAG model"""
40
40
tag_type : str
41
- value : Union [int , str , list [ list [int ]]]
42
- mask_list : Optional [list [ str , int ]]
41
+ value : Union [int , str , List [ List [int ]]]
42
+ mask_list : Optional [List [ Union [ str , int ]]] = None
43
43
44
- @validator ('value' )
44
+ @field_validator ('value' )
45
45
def validate_value (cls , value ):
46
46
"""Validate value when is a string"""
47
47
if isinstance (value , list ):
@@ -56,56 +56,56 @@ def validate_value(cls, value):
56
56
57
57
class UNIDoc (BaseModel ):
58
58
"""UNI model"""
59
- tag : Optional [TAGDoc ]
59
+ tag : Optional [TAGDoc ] = None
60
60
interface_id : str
61
61
62
62
63
63
class LinkConstraints (BaseModel ):
64
64
"""LinkConstraints."""
65
- bandwidth : Optional [float ]
66
- ownership : Optional [str ]
67
- reliability : Optional [float ]
68
- utilization : Optional [float ]
69
- delay : Optional [float ]
70
- priority : Optional [int ]
71
- not_ownership : Optional [List [str ]]
65
+ bandwidth : Optional [float ] = None
66
+ ownership : Optional [str ] = None
67
+ reliability : Optional [float ] = None
68
+ utilization : Optional [float ] = None
69
+ delay : Optional [float ] = None
70
+ priority : Optional [int ] = None
71
+ not_ownership : Optional [List [str ]] = None
72
72
73
73
74
74
class PathConstraints (BaseModel ):
75
75
"""Pathfinder Constraints."""
76
- spf_attribute : Optional [Literal ["hop" , "delay" , "priority" ]]
77
- spf_max_path_cost : Optional [float ]
78
- mandatory_metrics : Optional [LinkConstraints ]
79
- flexible_metrics : Optional [LinkConstraints ]
80
- minimum_flexible_hits : Optional [int ]
81
- undesired_links : Optional [List [str ]]
76
+ spf_attribute : Optional [Literal ["hop" , "delay" , "priority" ]] = None
77
+ spf_max_path_cost : Optional [float ] = None
78
+ mandatory_metrics : Optional [LinkConstraints ] = None
79
+ flexible_metrics : Optional [LinkConstraints ] = None
80
+ minimum_flexible_hits : Optional [int ] = None
81
+ undesired_links : Optional [List [str ]] = None
82
82
83
83
84
84
class EVCUpdateDoc (DocumentBaseModel ):
85
85
"""Base model when updating an EVC document"""
86
- uni_a : Optional [UNIDoc ]
87
- uni_z : Optional [UNIDoc ]
88
- name : Optional [str ]
89
- request_time : Optional [datetime ]
90
- start_date : Optional [datetime ]
91
- end_date : Optional [datetime ]
92
- queue_id : Optional [int ]
93
- flow_removed_at : Optional [datetime ]
94
- execution_rounds : Optional [int ]
95
- bandwidth : Optional [int ]
96
- primary_path : Optional [List ]
97
- backup_path : Optional [List ]
98
- primary_links : Optional [List ]
99
- backup_links : Optional [List ]
100
- dynamic_backup_path : Optional [bool ]
101
- primary_constraints : Optional [PathConstraints ]
102
- secondary_constraints : Optional [PathConstraints ]
103
- owner : Optional [str ]
104
- sb_priority : Optional [int ]
105
- service_level : Optional [int ]
106
- circuit_scheduler : Optional [List [CircuitScheduleDoc ]]
107
- metadata : Optional [dict ]
108
- enabled : Optional [bool ]
86
+ uni_a : Optional [UNIDoc ] = None
87
+ uni_z : Optional [UNIDoc ] = None
88
+ name : Optional [str ] = None
89
+ request_time : Optional [datetime ] = None
90
+ start_date : Optional [datetime ] = None
91
+ end_date : Optional [datetime ] = None
92
+ queue_id : Optional [int ] = None
93
+ flow_removed_at : Optional [datetime ] = None
94
+ execution_rounds : Optional [int ] = None
95
+ bandwidth : Optional [int ] = None
96
+ primary_path : Optional [List ] = None
97
+ backup_path : Optional [List ] = None
98
+ primary_links : Optional [List ] = None
99
+ backup_links : Optional [List ] = None
100
+ dynamic_backup_path : Optional [bool ] = None
101
+ primary_constraints : Optional [PathConstraints ] = None
102
+ secondary_constraints : Optional [PathConstraints ] = None
103
+ owner : Optional [str ] = None
104
+ sb_priority : Optional [int ] = None
105
+ service_level : Optional [int ] = None
106
+ circuit_scheduler : Optional [List [CircuitScheduleDoc ]] = None
107
+ metadata : Optional [dict ] = None
108
+ enabled : Optional [bool ] = None
109
109
110
110
111
111
class EVCBaseDoc (DocumentBaseModel ):
@@ -114,25 +114,25 @@ class EVCBaseDoc(DocumentBaseModel):
114
114
uni_a : UNIDoc
115
115
uni_z : UNIDoc
116
116
name : str
117
- request_time : Optional [datetime ]
118
- start_date : Optional [datetime ]
119
- end_date : Optional [datetime ]
120
- queue_id : Optional [int ]
121
- flow_removed_at : Optional [datetime ]
117
+ request_time : Optional [datetime ] = None
118
+ start_date : Optional [datetime ] = None
119
+ end_date : Optional [datetime ] = None
120
+ queue_id : Optional [int ] = None
121
+ flow_removed_at : Optional [datetime ] = None
122
122
execution_rounds : int = 0
123
123
bandwidth : int = 0
124
- primary_path : Optional [List ]
125
- backup_path : Optional [List ]
126
- current_path : Optional [List ]
127
- failover_path : Optional [List ]
128
- primary_links : Optional [List ]
129
- backup_links : Optional [List ]
124
+ primary_path : Optional [List ] = None
125
+ backup_path : Optional [List ] = None
126
+ current_path : Optional [List ] = None
127
+ failover_path : Optional [List ] = None
128
+ primary_links : Optional [List ] = None
129
+ backup_links : Optional [List ] = None
130
130
dynamic_backup_path : bool
131
- primary_constraints : Optional [PathConstraints ]
132
- secondary_constraints : Optional [PathConstraints ]
131
+ primary_constraints : Optional [PathConstraints ] = None
132
+ secondary_constraints : Optional [PathConstraints ] = None
133
133
creation_time : datetime
134
- owner : Optional [str ]
135
- sb_priority : Optional [int ]
134
+ owner : Optional [str ] = None
135
+ sb_priority : Optional [int ] = None
136
136
service_level : int = 0
137
137
circuit_scheduler : List [CircuitScheduleDoc ]
138
138
archived : bool = False
0 commit comments