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.
Files changed (29) hide show
  1. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/PKG-INFO +1 -1
  2. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/pyproject.toml +1 -1
  3. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/composed_configuration.py +65 -3
  4. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/README.md +0 -0
  5. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/__init__.py +0 -0
  6. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
  7. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/command.py +0 -0
  8. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
  9. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/diff.py +0 -0
  10. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
  11. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
  12. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/__init__.py +0 -0
  13. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/base.py +0 -0
  14. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/drivers/base_driver.py +0 -0
  15. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/exceptions/__init__.py +0 -0
  16. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/__init__.py +0 -0
  17. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/acl_model.py +0 -0
  18. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/attribute_value.py +0 -0
  19. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/container_entry.py +0 -0
  20. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/external_value.py +0 -0
  21. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/logging.py +0 -0
  22. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/management_connection.py +0 -0
  23. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/ned.py +0 -0
  24. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/node_response.py +0 -0
  25. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/models/spanning_tree.py +0 -0
  26. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/__init__.py +0 -0
  27. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/base.py +0 -0
  28. {acex_devkit-1.10.1 → acex_devkit-1.11.0}/src/acex_devkit/normalizer/engine.py +0 -0
  29. {acex_devkit-1.10.1 → acex_devkit-1.11.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.11.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.11.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,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