UML representation¶
AntaDevice¶
AntaDevice(name: str, tags: set[str] | None = None, *, disable_cache: bool = False)
Bases: ABC
Abstract class representing a device in ANTA.
An implementation of this class must override the abstract coroutines _collect()
andrefresh()
.
Attributes:
Name | Type | Description |
---|---|---|
name | Device name | is_online: True if the device IP is reachable and a port can be open.established: True if remote command execution succeeds.hw_model: Hardware model of the device.tags: Tags for this device.cache: In-memory cache from aiocache library for this device (None if cache is disabled).cache_locks: Dictionary mapping keys to asyncio locks to guarantee exclusive access to the cache if not disabled. |
Args:
name: Device name.tags: Tags for this device.disable_cache: Disable caching for all commands for this device.
Source code in anta/device.py
5556575859606162636465666768697071727374757677 |
|
cache_statistics property
¶
cache_statistics: dict[str, Any] | None
Returns the device cache statistics for logging purposes.
__hash__¶
__hash__() -> int
Implement hashing for AntaDevice objects.
Source code in anta/device.py
888990 |
|
collect async
¶
collect(command: AntaCommand, *, collection_id: str | None = None) -> None
Collect the output for a specified command.
When caching is activated on both the device and the command,this method prioritizes retrieving the output from the cache. In cases where the output isn’t cached yet,it will be freshly collected and then stored in the cache for future access.The method employs asynchronous locks based on the command’s UID to guarantee exclusive access to the cache.
When caching is NOT enabled, either at the device or command level, the method directly collects the outputvia the private _collect
method without interacting with the cache.
Args:
command: The command to collect.collection_id: An identifier used to build the eAPI request ID.
Source code in anta/device.py
139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
|
collect_commands async
¶
collect_commands(commands: list[AntaCommand], *, collection_id: str | None = None) -> None
Collect multiple commands.
Args:
commands: The commands to collect.collection_id: An identifier used to build the eAPI request ID.
Source code in anta/device.py
170171172173174175176177178 |
|
copy async
¶
copy(sources: list[Path], destination: Path, direction: Literal['to', 'from'] = 'from') -> None
Copy files to and from the device, usually through SCP.
It is not mandatory to implement this for a valid AntaDevice subclass.
Args:
sources: List of files to copy to or from the device.destination: Local or remote destination when copying the files. Can be a folder.direction: Defines if this coroutine copies files to or from the device.
Source code in anta/device.py
190191192193194195196197198199200201202203204 |
|
refresh abstractmethod
async
¶
refresh() -> None
Update attributes of an AntaDevice instance.
This coroutine must update the following attributes of AntaDevice: - is_online
: When the device IP is reachable and a port can be open - established
: When a command execution succeeds - hw_model
: The hardware model of the device
Source code in anta/device.py
180181182183184185186187188 |
|
UML representation¶
AsyncEOSDevice¶
AsyncEOSDevice(host: str, username: str, password: str, name: str | None = None, enable_password: str | None = None, port: int | None = None, ssh_port: int | None = 22, tags: set[str] | None = None, timeout: float | None = None, proto: Literal['http', 'https'] = 'https', *, enable: bool = False, insecure: bool = False, disable_cache: bool = False)
Bases: AntaDevice
Implementation of AntaDevice for EOS using aio-eapi.
Attributes:
Name | Type | Description |
---|---|---|
name | Device name | is_online: True if the device IP is reachable and a port can be openestablished: True if remote command execution succeedshw_model: Hardware model of the devicetags: Tags for this device |
Args:
host: Device FQDN or IP.username: Username to connect to eAPI and SSH.password: Password to connect to eAPI and SSH.name: Device name.enable: Collect commands using privileged mode.enable_password: Password used to gain privileged access on EOS.port: eAPI port. Defaults to 80 is proto is 'http' or 443 if proto is 'https'.ssh_port: SSH port.tags: Tags for this device.timeout: Timeout value in seconds for outgoing API calls.insecure: Disable SSH Host Key validation.proto: eAPI protocol. Value can be 'http' or 'https'.disable_cache: Disable caching for all commands for this device.
Source code in anta/device.py
221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
|
copy async
¶
copy(sources: list[Path], destination: Path, direction: Literal['to', 'from'] = 'from') -> None
Copy files to and from the device using asyncssh.scp().
Args:
sources: List of files to copy to or from the device.destination: Local or remote destination when copying the files. Can be a folder.direction: Defines if this coroutine copies files to or from the device.
Source code in anta/device.py
405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
|
refresh async
¶
refresh() -> None
Update attributes of an AsyncEOSDevice instance.
This coroutine must update the following attributes of AsyncEOSDevice:- is_online: When a device IP is reachable and a port can be open- established: When a command execution succeeds- hw_model: The hardware model of the device
Source code in anta/device.py
381382383384385386387388389390391392393394395396397398399400401402403 |
|