acex-devkit 2.8.0__tar.gz → 2.10.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-2.8.0 → acex_devkit-2.10.0}/PKG-INFO +1 -1
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/pyproject.toml +1 -1
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/__init__.py +8 -2
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/agent_manifest.py +19 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/collection_agent.py +2 -1
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/node_response.py +21 -5
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/telemetry_agent.py +2 -1
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/README.md +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/command.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/diff.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst2950.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst2960.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst3500.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst3560.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst3650.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst3750.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst3850.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst4500.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst6500.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst6800.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst9200.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst9300.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst9400.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/catalyst9500.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/generic.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/industrial.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/modules.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/nexus9000.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/cisco/routers.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/fortinet/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/fortinet/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/fortinet/fortigate_f.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/ex2300.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/ex3400.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/ex4100.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/ex4400.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/ex4650.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/juniper/modules.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/drivers/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/drivers/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/drivers/base_driver.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/exceptions/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/acl_model.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/ai_ops.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/asset.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/assignment.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/attribute_value.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/augment.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/auth_config.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/capability.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/compliance.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/composed_configuration.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/config_components.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/config_snapshot.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/contact.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/container_entry.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/credential.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/device_type.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/external_value.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/lldp_neighbor.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/lldp_topology.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/logging.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/logical_node.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/management_connection.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/ned.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/os_version.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/pagination.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/platform.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/reference.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/region.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/site.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/models/spanning_tree.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/normalizer/__init__.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/normalizer/base.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/normalizer/engine.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/os_versions.py +0 -0
- {acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/types/__init__.py +0 -0
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
from .agent_manifest import (
|
|
4
4
|
AckResult,
|
|
5
5
|
AgentConfigResponse,
|
|
6
|
+
AgentNodeSet,
|
|
7
|
+
AgentNodeSetResult,
|
|
6
8
|
CollectionAgentManifest,
|
|
7
9
|
ManifestTarget,
|
|
8
10
|
)
|
|
@@ -116,10 +118,11 @@ from .management_connection import (
|
|
|
116
118
|
from .ned import Ned
|
|
117
119
|
from .node_response import (
|
|
118
120
|
AssetRefType,
|
|
121
|
+
NodeAdminStatus,
|
|
119
122
|
NodeCreate,
|
|
120
123
|
NodeListItem,
|
|
124
|
+
NodeProvisionStatus,
|
|
121
125
|
NodeResponse,
|
|
122
|
-
NodeStatus,
|
|
123
126
|
NodeUpdate,
|
|
124
127
|
)
|
|
125
128
|
from .pagination import PaginatedResponse
|
|
@@ -168,7 +171,8 @@ __all__ = [
|
|
|
168
171
|
"NodeListItem",
|
|
169
172
|
"NodeUpdate",
|
|
170
173
|
"AssetRefType",
|
|
171
|
-
"
|
|
174
|
+
"NodeAdminStatus",
|
|
175
|
+
"NodeProvisionStatus",
|
|
172
176
|
"CredentialBase",
|
|
173
177
|
"CredentialFieldBase",
|
|
174
178
|
"CredentialFieldResponse",
|
|
@@ -207,6 +211,8 @@ __all__ = [
|
|
|
207
211
|
"ManifestTarget",
|
|
208
212
|
"AckResult",
|
|
209
213
|
"AgentConfigResponse",
|
|
214
|
+
"AgentNodeSet",
|
|
215
|
+
"AgentNodeSetResult",
|
|
210
216
|
"LldpNeighborBase",
|
|
211
217
|
"LldpNeighborEntry",
|
|
212
218
|
"LldpNeighborUpload",
|
|
@@ -34,3 +34,22 @@ class AgentConfigResponse(BaseModel):
|
|
|
34
34
|
"""Rendered config text (TOML) for a telemetry agent."""
|
|
35
35
|
|
|
36
36
|
config: str
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class AgentNodeSet(BaseModel):
|
|
40
|
+
"""Declarative explicit-node membership for an agent (PUT …/nodes).
|
|
41
|
+
|
|
42
|
+
`node_ids` replaces the agent's explicit node links; an empty list removes
|
|
43
|
+
all. Rule-matched nodes are unaffected. When `expected_revision` is given
|
|
44
|
+
and differs from the agent's current `config_revision`, the request is
|
|
45
|
+
rejected with 409 so concurrent edits don't silently overwrite each other.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
node_ids: list[int]
|
|
49
|
+
expected_revision: int | None = None
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class AgentNodeSetResult(BaseModel):
|
|
53
|
+
added: list[int] = []
|
|
54
|
+
removed: list[int] = []
|
|
55
|
+
config_revision: int
|
|
@@ -15,7 +15,8 @@ class CollectionAgentMatchRuleBase(BaseModel):
|
|
|
15
15
|
site: str | None = None
|
|
16
16
|
vendor: str | None = None
|
|
17
17
|
os: str | None = None
|
|
18
|
-
|
|
18
|
+
admin_status: str | None = None
|
|
19
|
+
provision_status: str | None = None
|
|
19
20
|
role: str | None = None
|
|
20
21
|
|
|
21
22
|
|
|
@@ -18,18 +18,32 @@ class AssetRefType(StrEnum):
|
|
|
18
18
|
asset_cluster = "asset_cluster"
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class
|
|
21
|
+
class NodeAdminStatus(StrEnum):
|
|
22
|
+
"""Operator intent for the node."""
|
|
23
|
+
|
|
22
24
|
planned = "planned"
|
|
23
|
-
init = "init"
|
|
24
25
|
active = "active"
|
|
25
26
|
decommissioned = "decommissioned"
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
class NodeProvisionStatus(StrEnum):
|
|
30
|
+
"""Where the node's device is in the provisioning lifecycle. Set by the provisioning flow, not by operators."""
|
|
31
|
+
|
|
32
|
+
unprovisioned = "unprovisioned" # never provisioned by ACEX
|
|
33
|
+
adopted = "adopted" # brownfield: already running when brought under management
|
|
34
|
+
pending = "pending" # ZTP armed, waiting for the device to show up
|
|
35
|
+
bootstrapping = "bootstrapping" # bootstrap config fetched, waiting for SSH reachability
|
|
36
|
+
provisioning = "provisioning" # full config being pushed and verified
|
|
37
|
+
provisioned = "provisioned" # provisioned by ACEX and verified
|
|
38
|
+
failed = "failed"
|
|
39
|
+
|
|
40
|
+
|
|
28
41
|
class NodeBase(BaseModel):
|
|
29
42
|
asset_ref_id: int
|
|
30
43
|
asset_ref_type: AssetRefType | None = None
|
|
31
44
|
logical_node_id: int
|
|
32
|
-
|
|
45
|
+
admin_status: NodeAdminStatus | None = None
|
|
46
|
+
provision_status: NodeProvisionStatus | None = None
|
|
33
47
|
|
|
34
48
|
|
|
35
49
|
class NodeListItem(PersistedResponse, NodeBase):
|
|
@@ -53,7 +67,8 @@ class NodeUpdate(BaseModel):
|
|
|
53
67
|
asset_ref_id: int | None = None
|
|
54
68
|
asset_ref_type: AssetRefType | None = None
|
|
55
69
|
logical_node_id: int | None = None
|
|
56
|
-
|
|
70
|
+
admin_status: NodeAdminStatus | None = None
|
|
71
|
+
provision_status: NodeProvisionStatus | None = None
|
|
57
72
|
|
|
58
73
|
|
|
59
74
|
class NodeResponse(PersistedResponse, NodeBase):
|
|
@@ -67,7 +82,8 @@ class NodeResponse(PersistedResponse, NodeBase):
|
|
|
67
82
|
__all__ = [
|
|
68
83
|
"LogicalNodeResponse",
|
|
69
84
|
"AssetRefType",
|
|
70
|
-
"
|
|
85
|
+
"NodeAdminStatus",
|
|
86
|
+
"NodeProvisionStatus",
|
|
71
87
|
"NodeBase",
|
|
72
88
|
"NodeListItem",
|
|
73
89
|
"NodeResponse",
|
|
@@ -30,7 +30,8 @@ class TelemetryAgentMatchRuleBase(BaseModel):
|
|
|
30
30
|
site: str | None = None
|
|
31
31
|
vendor: str | None = None
|
|
32
32
|
os: str | None = None
|
|
33
|
-
|
|
33
|
+
admin_status: str | None = None
|
|
34
|
+
provision_status: str | None = None
|
|
34
35
|
role: str | None = None
|
|
35
36
|
|
|
36
37
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{acex_devkit-2.8.0 → acex_devkit-2.10.0}/src/acex_devkit/device_types/fortinet/fortigate_f.py
RENAMED
|
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
|
|
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
|