acex-devkit 1.10.1__tar.gz → 1.11.0__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.
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/PKG-INFO +1 -1
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/pyproject.toml +1 -1
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/composed_configuration.py +65 -3
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/README.md +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/command.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/diff.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/base.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/base_driver.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/exceptions/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/acl_model.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/attribute_value.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/container_entry.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/external_value.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/logging.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/management_connection.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/ned.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/node_response.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/spanning_tree.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/base.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/engine.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/types/__init__.py +0 -0
|
@@ -139,6 +139,60 @@ class Vlan(ContainerEntry, BaseModel):
|
|
|
139
139
|
vlan_name: Optional[AttributeValue[str]] = None
|
|
140
140
|
network_instance: Optional[AttributeValue[str]] = None
|
|
141
141
|
|
|
142
|
+
class StormControlAttributes(BaseModel):
|
|
143
|
+
"Storm control thresholds for broadcast/multicast/unknown-unicast traffic on an interface."
|
|
144
|
+
broadcast_pps: Optional[AttributeValue[int]] = None
|
|
145
|
+
multicast_pps: Optional[AttributeValue[int]] = None
|
|
146
|
+
unknown_unicast_pps: Optional[AttributeValue[int]] = None
|
|
147
|
+
action: Optional[AttributeValue[Literal["trap", "shutdown"]]] = None
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class InterfaceTemplateAttributes(ContainerEntry, BaseModel):
|
|
151
|
+
"Reusable named set of interface attributes that interfaces can reference."
|
|
152
|
+
identity_fields: ClassVar[tuple[str, ...]] = ("name",)
|
|
153
|
+
name: AttributeValue[str]
|
|
154
|
+
|
|
155
|
+
description: Optional[AttributeValue[str]] = None
|
|
156
|
+
enabled: Optional[AttributeValue[bool]] = None
|
|
157
|
+
|
|
158
|
+
# L1/L2
|
|
159
|
+
switchport: Optional[AttributeValue[bool]] = None
|
|
160
|
+
switchport_mode: Optional[AttributeValue[Literal["access", "trunk"]]] = None
|
|
161
|
+
trunk_allowed_vlans: Optional[AttributeValue[List[int]]] = None
|
|
162
|
+
native_vlan: Optional[AttributeValue[int]] = None
|
|
163
|
+
access_vlan: Optional[AttributeValue[int]] = None
|
|
164
|
+
voice_vlan: Optional[AttributeValue[int]] = None
|
|
165
|
+
mtu: Optional[AttributeValue[int]] = None
|
|
166
|
+
speed: Optional[AttributeValue[int]] = None
|
|
167
|
+
duplex: Optional[AttributeValue[str]] = None
|
|
168
|
+
negotiation: Optional[AttributeValue[bool]] = None
|
|
169
|
+
dtp_negotiation: Optional[AttributeValue[bool]] = None # False renders as "switchport nonegotiate" on Cisco
|
|
170
|
+
auto_mdix: Optional[AttributeValue[bool]] = None
|
|
171
|
+
|
|
172
|
+
# Operational signaling (default on; set False to suppress)
|
|
173
|
+
logging_link_status: Optional[AttributeValue[bool]] = None
|
|
174
|
+
snmp_link_status_trap: Optional[AttributeValue[bool]] = None
|
|
175
|
+
|
|
176
|
+
# Storm control
|
|
177
|
+
storm_control: Optional[StormControlAttributes] = None
|
|
178
|
+
|
|
179
|
+
# Spanning-tree
|
|
180
|
+
stp_port_priority: Optional[AttributeValue[int]] = None
|
|
181
|
+
stp_cost: Optional[AttributeValue[int]] = None
|
|
182
|
+
stp_edge_port: Optional[AttributeValue[bool]] = None
|
|
183
|
+
stp_bpdu_filter: Optional[AttributeValue[bool]] = None
|
|
184
|
+
stp_bpdu_guard: Optional[AttributeValue[bool]] = None
|
|
185
|
+
stp_loop_guard: Optional[AttributeValue[bool]] = None
|
|
186
|
+
stp_root_guard: Optional[AttributeValue[bool]] = None
|
|
187
|
+
stp_link_type: Optional[AttributeValue[Literal["point-to-point", "shared"]]] = None
|
|
188
|
+
|
|
189
|
+
# LACP
|
|
190
|
+
lacp_enabled: Optional[AttributeValue[bool]] = None
|
|
191
|
+
lacp_mode: Optional[AttributeValue[Literal["active", "passive", "on", "auto"]]] = None
|
|
192
|
+
lacp_port_priority: Optional[AttributeValue[int]] = None
|
|
193
|
+
lacp_interval: Optional[AttributeValue[Literal["fast", "slow"]]] = None
|
|
194
|
+
|
|
195
|
+
|
|
142
196
|
class Interface(ContainerEntry, BaseModel):
|
|
143
197
|
"Base class for all interfaces"
|
|
144
198
|
identity_fields: ClassVar[tuple[str, ...]] = ("index", "type")
|
|
@@ -148,9 +202,15 @@ class Interface(ContainerEntry, BaseModel):
|
|
|
148
202
|
description: Optional[AttributeValue[str]] = None
|
|
149
203
|
enabled: Optional[AttributeValue[bool]] = None
|
|
150
204
|
ipv4: Optional[AttributeValue[str]] = None
|
|
151
|
-
redirects: Optional[AttributeValue[bool]] = None # Regarding IP redirects.
|
|
205
|
+
redirects: Optional[AttributeValue[bool]] = None # Regarding IP redirects.
|
|
152
206
|
proxy_arp: Optional[AttributeValue[bool]] = None # Cisco true = yes / false = no, Juniper true = unrestricted / false = restricted
|
|
153
|
-
|
|
207
|
+
interface_template: Optional[Reference] = None
|
|
208
|
+
|
|
209
|
+
dtp_negotiation: Optional[AttributeValue[bool]] = None # False renders as "switchport nonegotiate" on Cisco
|
|
210
|
+
logging_link_status: Optional[AttributeValue[bool]] = None # Default on; False suppresses link-state log events
|
|
211
|
+
snmp_link_status_trap: Optional[AttributeValue[bool]] = None # Default on; False suppresses link-state SNMP traps
|
|
212
|
+
storm_control: Optional[StormControlAttributes] = None
|
|
213
|
+
|
|
154
214
|
type: Literal[
|
|
155
215
|
"ethernetCsmacd",
|
|
156
216
|
"ieee8023adLag",
|
|
@@ -159,7 +219,7 @@ class Interface(ContainerEntry, BaseModel):
|
|
|
159
219
|
"subinterface",
|
|
160
220
|
"managementInterface"
|
|
161
221
|
] = "ethernetCsmacd"
|
|
162
|
-
|
|
222
|
+
|
|
163
223
|
model_config = {
|
|
164
224
|
"discriminator": "type"
|
|
165
225
|
}
|
|
@@ -184,6 +244,7 @@ class EthernetCsmacdInterface(Interface):
|
|
|
184
244
|
voice_vlan: Optional[AttributeValue[int]] = None
|
|
185
245
|
mtu: Optional[AttributeValue[int]] = None # No default set as it differs between devices and vendors
|
|
186
246
|
negotiation: Optional[AttributeValue[bool]] = None
|
|
247
|
+
auto_mdix: Optional[AttributeValue[bool]] = None
|
|
187
248
|
#lldp_enabled: Optional[AttributeValue[bool]] = None
|
|
188
249
|
#cdp_enabled: Optional[AttributeValue[bool]] = None
|
|
189
250
|
|
|
@@ -841,6 +902,7 @@ class ComposedConfiguration(BaseModel):
|
|
|
841
902
|
cdp: Optional[CdpConfigAttributes] = CdpConfigAttributes()
|
|
842
903
|
lacp: Optional[Lacp] = Lacp()
|
|
843
904
|
interfaces: Dict[str, InterfaceType] = {}
|
|
905
|
+
interface_templates: Dict[str, InterfaceTemplateAttributes] = {}
|
|
844
906
|
network_instances: Dict[str, NetworkInstance] = {"global": NetworkInstance(name="global")}
|
|
845
907
|
stp: Optional[SpanningTree] = SpanningTree()
|
|
846
908
|
sampling: Optional[Sampling] = Sampling()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|