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.
Files changed (29) hide show
  1. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/PKG-INFO +1 -1
  2. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/pyproject.toml +1 -1
  3. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/composed_configuration.py +66 -3
  4. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/README.md +0 -0
  5. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/__init__.py +0 -0
  6. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
  7. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/command.py +0 -0
  8. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
  9. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/diff.py +0 -0
  10. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
  11. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
  12. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/__init__.py +0 -0
  13. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/base.py +0 -0
  14. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/drivers/base_driver.py +0 -0
  15. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/exceptions/__init__.py +0 -0
  16. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/__init__.py +0 -0
  17. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/acl_model.py +0 -0
  18. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/attribute_value.py +0 -0
  19. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/container_entry.py +0 -0
  20. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/external_value.py +0 -0
  21. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/logging.py +0 -0
  22. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/management_connection.py +0 -0
  23. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/ned.py +0 -0
  24. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/node_response.py +0 -0
  25. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/models/spanning_tree.py +0 -0
  26. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/__init__.py +0 -0
  27. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/base.py +0 -0
  28. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/normalizer/engine.py +0 -0
  29. {acex_devkit-1.10.1 → acex_devkit-1.12.0}/src/acex_devkit/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acex-devkit
3
- Version: 1.10.1
3
+ Version: 1.12.0
4
4
  Summary: ACE-X DevKit - Development kit for building ACE-X drivers and plugins
5
5
  License: AGPL-3.0
6
6
  Keywords: automation,devkit,sdk,drivers,plugins
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "acex-devkit"
3
- version = "1.10.1"
3
+ version = "1.12.0"
4
4
  description = "ACE-X DevKit - Development kit for building ACE-X drivers and plugins"
5
5
  authors = ["Johan Lahti <johan.lahti@acebit.se>"]
6
6
  readme = "README.md"
@@ -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