acex-devkit 2.6.0__tar.gz → 2.8.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.6.0 → acex_devkit-2.8.0}/PKG-INFO +2 -1
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/pyproject.toml +1 -1
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/node_response.py +2 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/telemetry_agent.py +31 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/README.md +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/command.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/configdiffer.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/diff.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/old_configdiffer.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/configdiffer/old_diff.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst2950.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst2960.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst3500.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst3560.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst3650.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst3750.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst3850.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst4500.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst6500.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst6800.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst9200.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst9300.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst9400.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/catalyst9500.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/generic.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/industrial.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/modules.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/nexus9000.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/cisco/routers.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/fortinet/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/fortinet/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/fortinet/fortigate_f.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/ex2300.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/ex3400.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/ex4100.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/ex4400.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/ex4650.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/device_types/juniper/modules.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/drivers/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/drivers/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/drivers/base_driver.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/exceptions/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/acl_model.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/agent_manifest.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/ai_ops.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/asset.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/assignment.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/attribute_value.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/augment.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/auth_config.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/capability.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/collection_agent.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/compliance.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/composed_configuration.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/config_components.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/config_snapshot.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/contact.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/container_entry.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/credential.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/device_type.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/external_value.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/lldp_neighbor.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/lldp_topology.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/logging.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/logical_node.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/management_connection.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/ned.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/os_version.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/pagination.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/platform.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/reference.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/region.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/site.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/models/spanning_tree.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/normalizer/__init__.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/normalizer/base.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/normalizer/engine.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.0}/src/acex_devkit/os_versions.py +0 -0
- {acex_devkit-2.6.0 → acex_devkit-2.8.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: 2.
|
|
3
|
+
Version: 2.8.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
|
|
@@ -11,6 +11,7 @@ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
14
15
|
Requires-Dist: deepdiff (>=8.6.1)
|
|
15
16
|
Requires-Dist: ipaddress (>=1.0.23)
|
|
16
17
|
Requires-Dist: pydantic (>=2.12.5)
|
|
@@ -10,6 +10,7 @@ from acex_devkit.models.asset import (
|
|
|
10
10
|
)
|
|
11
11
|
from acex_devkit.models.base import PersistedResponse
|
|
12
12
|
from acex_devkit.models.logical_node import LogicalNodeResponse
|
|
13
|
+
from acex_devkit.models.management_connection import ManagementConnectionResponse
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class AssetRefType(StrEnum):
|
|
@@ -39,6 +40,7 @@ class NodeListItem(PersistedResponse, NodeBase):
|
|
|
39
40
|
vendor: str | None = None
|
|
40
41
|
os: str | None = None
|
|
41
42
|
ned_id: str | None = None
|
|
43
|
+
management_connections: list[ManagementConnectionResponse] = []
|
|
42
44
|
created_at: datetime | None = None
|
|
43
45
|
updated_at: datetime | None = None
|
|
44
46
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from enum import StrEnum
|
|
2
|
+
from typing import Literal
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel
|
|
4
5
|
|
|
@@ -79,6 +80,32 @@ class TelemetryAgentAck(BaseModel):
|
|
|
79
80
|
config_revision: int
|
|
80
81
|
|
|
81
82
|
|
|
83
|
+
class CapabilityCoverage(BaseModel):
|
|
84
|
+
"""Whether one node-scoped capability made it into the agent's config.
|
|
85
|
+
|
|
86
|
+
For `skipped`, `reason` is a stable code (e.g. "no_management_ip",
|
|
87
|
+
"no_logical_node", "component_error") and `detail` carries free-text
|
|
88
|
+
context when available.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
status: Literal["rendered", "skipped"]
|
|
92
|
+
reason: str | None = None
|
|
93
|
+
detail: str | None = None
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class NodeCoverage(BaseModel):
|
|
97
|
+
"""One node the agent covers, and which capabilities are rendered for it.
|
|
98
|
+
|
|
99
|
+
`capabilities` holds only granted, node-scoped capabilities (e.g. icmp,
|
|
100
|
+
snmp) — agent-level listeners such as snmp_trap/syslog are not per node.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
node_id: int
|
|
104
|
+
hostname: str | None = None
|
|
105
|
+
source: Literal["explicit", "rule", "both"]
|
|
106
|
+
capabilities: dict[TelemetryCapability, CapabilityCoverage] = {}
|
|
107
|
+
|
|
108
|
+
|
|
82
109
|
class TelemetryAgentResponse(PersistedResponse, TelemetryAgentBase):
|
|
83
110
|
config_revision: int = 0
|
|
84
111
|
last_config_poll: str | None = None
|
|
@@ -88,6 +115,8 @@ class TelemetryAgentResponse(PersistedResponse, TelemetryAgentBase):
|
|
|
88
115
|
nodes: list[int] = []
|
|
89
116
|
rules: list[TelemetryAgentMatchRuleResponse] = []
|
|
90
117
|
resolved_nodes: list[int] = []
|
|
118
|
+
# Only populated on single-agent reads (GET /agents/{id}); empty in listings.
|
|
119
|
+
node_coverage: list[NodeCoverage] = []
|
|
91
120
|
|
|
92
121
|
|
|
93
122
|
__all__ = [
|
|
@@ -102,4 +131,6 @@ __all__ = [
|
|
|
102
131
|
"TelemetryAgentMatchRuleResponse",
|
|
103
132
|
"TelemetryAgentResponse",
|
|
104
133
|
"TelemetryAgentUpdate",
|
|
134
|
+
"CapabilityCoverage",
|
|
135
|
+
"NodeCoverage",
|
|
105
136
|
]
|
|
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.6.0 → acex_devkit-2.8.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|