acex-devkit 1.3.2__tar.gz → 1.3.4__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.3.2 → acex_devkit-1.3.4}/PKG-INFO +1 -1
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/pyproject.toml +1 -1
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/composed_configuration.py +36 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/node_response.py +13 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/README.md +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/__init__.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/__init__.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/command.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/diff.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/configdiffer/old_diff.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/drivers/__init__.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/drivers/base.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/drivers/base_driver.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/exceptions/__init__.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/__init__.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/acl_model.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/attribute_value.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/container_entry.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/external_value.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/logging.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/ned.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/models/spanning_tree.py +0 -0
- {acex_devkit-1.3.2 → acex_devkit-1.3.4}/src/acex_devkit/types/__init__.py +0 -0
|
@@ -130,6 +130,8 @@ class Interface(ContainerEntry, BaseModel):
|
|
|
130
130
|
description: Optional[AttributeValue[str]] = None
|
|
131
131
|
enabled: Optional[AttributeValue[bool]] = None
|
|
132
132
|
ipv4: Optional[AttributeValue[str]] = None
|
|
133
|
+
redirects: Optional[AttributeValue[bool]] = None # Regarding IP redirects.
|
|
134
|
+
proxy_arp: Optional[AttributeValue[bool]] = None # Cisco true = yes / false = no, Juniper true = unrestricted / false = restricted
|
|
133
135
|
|
|
134
136
|
type: Literal[
|
|
135
137
|
"ethernetCsmacd",
|
|
@@ -164,6 +166,8 @@ class EthernetCsmacdInterface(Interface):
|
|
|
164
166
|
voice_vlan: Optional[AttributeValue[int]] = None
|
|
165
167
|
mtu: Optional[AttributeValue[int]] = None # No default set as it differs between devices and vendors
|
|
166
168
|
negotiation: Optional[AttributeValue[bool]] = None
|
|
169
|
+
lldp_enabled: Optional[AttributeValue[bool]] = None
|
|
170
|
+
cdp_enabled: Optional[AttributeValue[bool]] = None
|
|
167
171
|
|
|
168
172
|
# LACP relaterade attribut
|
|
169
173
|
aggregate_id: Optional[AttributeValue[int]] = None
|
|
@@ -652,6 +656,36 @@ class TripleA(BaseModel):
|
|
|
652
656
|
authorization: aaaAuthorization = aaaAuthorization()
|
|
653
657
|
accounting: aaaAccounting = aaaAccounting()
|
|
654
658
|
|
|
659
|
+
class VTPAttributes(BaseModel):
|
|
660
|
+
domain_name: Optional[AttributeValue[str]] = None
|
|
661
|
+
mode: Optional[AttributeValue[Literal["server", "client", "transparent", 'off']]] = None
|
|
662
|
+
primary_server: Optional[AttributeValue[bool]] = False # Cisco proprietary
|
|
663
|
+
version: Optional[AttributeValue[Literal[1, 2, 3]]] = None
|
|
664
|
+
password: Optional[AttributeValue[str]] = None
|
|
665
|
+
password_hashed: Optional[AttributeValue[str]] = None
|
|
666
|
+
|
|
667
|
+
class VTP(BaseModel):
|
|
668
|
+
config: VTPAttributes = VTPAttributes()
|
|
669
|
+
|
|
670
|
+
class DHCPSnoopingAttributes(BaseModel):
|
|
671
|
+
enabled: Optional[AttributeValue[bool]] = None
|
|
672
|
+
vlans: Optional[Dict[str, Reference]] = {} # VLANs where DHCP snooping is enabled, key is VLAN ID, value is reference to VLAN
|
|
673
|
+
trust_interfaces: Optional[Dict[str, Reference]] = {} # Interfaces that are trusted for DHCP snooping, key is interface name, value is reference to interface
|
|
674
|
+
option82: Optional[AttributeValue[bool]] = None # Whether DHCP snooping option 82 is enabled
|
|
675
|
+
|
|
676
|
+
class DhcpRelayServerAttributes(ContainerEntry, BaseModel):
|
|
677
|
+
identity_fields: ClassVar[tuple[str, ...]] = ("address",)
|
|
678
|
+
address: Optional[AttributeValue[str]] = None
|
|
679
|
+
network_instance: Optional[AttributeValue[str]] = None
|
|
680
|
+
interfaces: Optional[Dict[str, Reference]] = {}
|
|
681
|
+
|
|
682
|
+
class DhcpRelay(BaseModel):
|
|
683
|
+
relay_servers: Optional[Dict[str, DhcpRelayServerAttributes]] = {}
|
|
684
|
+
|
|
685
|
+
class Dhcp(BaseModel):
|
|
686
|
+
snooping: Optional[DHCPSnoopingAttributes] = DHCPSnoopingAttributes()
|
|
687
|
+
relay: Optional[DhcpRelay] = DhcpRelay()
|
|
688
|
+
|
|
655
689
|
class System(BaseModel):
|
|
656
690
|
config: SystemConfig = SystemConfig()
|
|
657
691
|
aaa: Optional[TripleA] = TripleA()
|
|
@@ -659,6 +693,8 @@ class System(BaseModel):
|
|
|
659
693
|
ntp: Optional[Ntp] = Ntp()
|
|
660
694
|
ssh: Optional[Ssh] = Ssh()
|
|
661
695
|
snmp: Optional[Snmp] = Snmp()
|
|
696
|
+
vtp: Optional[VTP] = VTP()
|
|
697
|
+
dhcp: Optional[Dhcp] = Dhcp()
|
|
662
698
|
|
|
663
699
|
# For different types of interfaces that are fine for response model:
|
|
664
700
|
InterfaceType = Union[
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from pydantic import BaseModel, Field
|
|
2
2
|
from typing import Optional, Dict, Any
|
|
3
3
|
from enum import Enum
|
|
4
|
+
from datetime import datetime
|
|
4
5
|
from acex_devkit.models.composed_configuration import ComposedConfiguration
|
|
5
6
|
|
|
6
7
|
|
|
@@ -29,14 +30,26 @@ class AssetRefType(str, Enum):
|
|
|
29
30
|
assetcluster = "assetcluster"
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
class NodeStatus(str, Enum):
|
|
34
|
+
planned = "planned"
|
|
35
|
+
init = "init"
|
|
36
|
+
active = "active"
|
|
37
|
+
decommissioned = "decommissioned"
|
|
38
|
+
|
|
39
|
+
|
|
32
40
|
class NodeBase(BaseModel):
|
|
33
41
|
asset_ref_id: int
|
|
34
42
|
asset_ref_type: AssetRefType = AssetRefType.asset
|
|
35
43
|
logical_node_id: int
|
|
44
|
+
status: NodeStatus = NodeStatus.planned
|
|
36
45
|
|
|
37
46
|
class Node(NodeBase):
|
|
38
47
|
id: Optional[int] = None
|
|
48
|
+
created_at: Optional[datetime] = None
|
|
49
|
+
updated_at: Optional[datetime] = None
|
|
39
50
|
|
|
40
51
|
class NodeResponse(NodeBase):
|
|
41
52
|
asset: Asset
|
|
42
53
|
logical_node: LogicalNodeResponse
|
|
54
|
+
created_at: datetime
|
|
55
|
+
updated_at: Optional[datetime] = None
|
|
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
|