acex-devkit 1.10.1__tar.gz → 1.12.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.12.0}/PKG-INFO +1 -1
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/pyproject.toml +1 -1
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/composed_configuration.py +66 -3
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/README.md +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/command.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/diff.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/base.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/base_driver.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/exceptions/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/acl_model.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/attribute_value.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/container_entry.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/external_value.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/logging.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/management_connection.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/ned.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/node_response.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/spanning_tree.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/__init__.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/base.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/engine.py +0 -0
- {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/types/__init__.py +0 -0
|
@@ -139,6 +139,61 @@ 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 # 802.1w edge port; renders to "spanning-tree portfast" on Cisco
|
|
183
|
+
stp_portfast: Optional[AttributeValue[bool]] = None # Cisco-explicit; renders to "spanning-tree portfast"
|
|
184
|
+
stp_bpdu_filter: Optional[AttributeValue[bool]] = None
|
|
185
|
+
stp_bpdu_guard: Optional[AttributeValue[bool]] = None
|
|
186
|
+
stp_loop_guard: Optional[AttributeValue[bool]] = None
|
|
187
|
+
stp_root_guard: Optional[AttributeValue[bool]] = None
|
|
188
|
+
stp_link_type: Optional[AttributeValue[Literal["point-to-point", "shared"]]] = None
|
|
189
|
+
|
|
190
|
+
# LACP
|
|
191
|
+
lacp_enabled: Optional[AttributeValue[bool]] = None
|
|
192
|
+
lacp_mode: Optional[AttributeValue[Literal["active", "passive", "on", "auto"]]] = None
|
|
193
|
+
lacp_port_priority: Optional[AttributeValue[int]] = None
|
|
194
|
+
lacp_interval: Optional[AttributeValue[Literal["fast", "slow"]]] = None
|
|
195
|
+
|
|
196
|
+
|
|
142
197
|
class Interface(ContainerEntry, BaseModel):
|
|
143
198
|
"Base class for all interfaces"
|
|
144
199
|
identity_fields: ClassVar[tuple[str, ...]] = ("index", "type")
|
|
@@ -148,9 +203,15 @@ class Interface(ContainerEntry, BaseModel):
|
|
|
148
203
|
description: Optional[AttributeValue[str]] = None
|
|
149
204
|
enabled: Optional[AttributeValue[bool]] = None
|
|
150
205
|
ipv4: Optional[AttributeValue[str]] = None
|
|
151
|
-
redirects: Optional[AttributeValue[bool]] = None # Regarding IP redirects.
|
|
206
|
+
redirects: Optional[AttributeValue[bool]] = None # Regarding IP redirects.
|
|
152
207
|
proxy_arp: Optional[AttributeValue[bool]] = None # Cisco true = yes / false = no, Juniper true = unrestricted / false = restricted
|
|
153
|
-
|
|
208
|
+
interface_template: Optional[Reference] = None
|
|
209
|
+
|
|
210
|
+
dtp_negotiation: Optional[AttributeValue[bool]] = None # False renders as "switchport nonegotiate" on Cisco
|
|
211
|
+
logging_link_status: Optional[AttributeValue[bool]] = None # Default on; False suppresses link-state log events
|
|
212
|
+
snmp_link_status_trap: Optional[AttributeValue[bool]] = None # Default on; False suppresses link-state SNMP traps
|
|
213
|
+
storm_control: Optional[StormControlAttributes] = None
|
|
214
|
+
|
|
154
215
|
type: Literal[
|
|
155
216
|
"ethernetCsmacd",
|
|
156
217
|
"ieee8023adLag",
|
|
@@ -159,7 +220,7 @@ class Interface(ContainerEntry, BaseModel):
|
|
|
159
220
|
"subinterface",
|
|
160
221
|
"managementInterface"
|
|
161
222
|
] = "ethernetCsmacd"
|
|
162
|
-
|
|
223
|
+
|
|
163
224
|
model_config = {
|
|
164
225
|
"discriminator": "type"
|
|
165
226
|
}
|
|
@@ -184,6 +245,7 @@ class EthernetCsmacdInterface(Interface):
|
|
|
184
245
|
voice_vlan: Optional[AttributeValue[int]] = None
|
|
185
246
|
mtu: Optional[AttributeValue[int]] = None # No default set as it differs between devices and vendors
|
|
186
247
|
negotiation: Optional[AttributeValue[bool]] = None
|
|
248
|
+
auto_mdix: Optional[AttributeValue[bool]] = None
|
|
187
249
|
#lldp_enabled: Optional[AttributeValue[bool]] = None
|
|
188
250
|
#cdp_enabled: Optional[AttributeValue[bool]] = None
|
|
189
251
|
|
|
@@ -841,6 +903,7 @@ class ComposedConfiguration(BaseModel):
|
|
|
841
903
|
cdp: Optional[CdpConfigAttributes] = CdpConfigAttributes()
|
|
842
904
|
lacp: Optional[Lacp] = Lacp()
|
|
843
905
|
interfaces: Dict[str, InterfaceType] = {}
|
|
906
|
+
interface_templates: Dict[str, InterfaceTemplateAttributes] = {}
|
|
844
907
|
network_instances: Dict[str, NetworkInstance] = {"global": NetworkInstance(name="global")}
|
|
845
908
|
stp: Optional[SpanningTree] = SpanningTree()
|
|
846
909
|
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
|