Merging upstream version 0.15.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
bfebc2a0f4
commit
0a0cb7f4fd
103 changed files with 79620 additions and 742 deletions
67
examples/anta_runner.py
Normal file
67
examples/anta_runner.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
# Copyright (c) 2023-2024 Arista Networks, Inc.
|
||||
# Use of this source code is governed by the Apache License 2.0
|
||||
# that can be found in the LICENSE file.
|
||||
"""Example script for ANTA.
|
||||
|
||||
usage:
|
||||
|
||||
python anta_runner.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from anta.catalog import AntaCatalog
|
||||
from anta.cli.nrfu.utils import anta_progress_bar
|
||||
from anta.inventory import AntaInventory
|
||||
from anta.logger import Log, setup_logging
|
||||
from anta.models import AntaTest
|
||||
from anta.result_manager import ResultManager
|
||||
from anta.runner import main as anta_runner
|
||||
|
||||
# setup logging
|
||||
setup_logging(Log.INFO, Path("/tmp/anta.log"))
|
||||
LOGGER = logging.getLogger()
|
||||
SCRIPT_LOG_PREFIX = "[bold magenta][ANTA RUNNER SCRIPT][/] " # For convenience purpose - there are nicer way to do this.
|
||||
|
||||
|
||||
# NOTE: The inventory and catalog files are not delivered with this script
|
||||
USERNAME = "admin"
|
||||
PASSWORD = "admin"
|
||||
CATALOG_PATH = Path("/tmp/anta_catalog.yml")
|
||||
INVENTORY_PATH = Path("/tmp/anta_inventory.yml")
|
||||
|
||||
# Load catalog file
|
||||
try:
|
||||
catalog = AntaCatalog.parse(CATALOG_PATH)
|
||||
except Exception:
|
||||
LOGGER.exception("%s Catalog failed to load!", SCRIPT_LOG_PREFIX)
|
||||
sys.exit(1)
|
||||
LOGGER.info("%s Catalog loaded!", SCRIPT_LOG_PREFIX)
|
||||
|
||||
# Load inventory
|
||||
try:
|
||||
inventory = AntaInventory.parse(INVENTORY_PATH, username=USERNAME, password=PASSWORD)
|
||||
except Exception:
|
||||
LOGGER.exception("%s Inventory failed to load!", SCRIPT_LOG_PREFIX)
|
||||
sys.exit(1)
|
||||
LOGGER.info("%s Inventory loaded!", SCRIPT_LOG_PREFIX)
|
||||
|
||||
# Create result manager object
|
||||
manager = ResultManager()
|
||||
|
||||
# Launch ANTA
|
||||
LOGGER.info("%s Starting ANTA runner...", SCRIPT_LOG_PREFIX)
|
||||
with anta_progress_bar() as AntaTest.progress:
|
||||
# Set dry_run to True to avoid connecting to the devices
|
||||
asyncio.run(anta_runner(manager, inventory, catalog, dry_run=False))
|
||||
|
||||
LOGGER.info("%s ANTA run completed!", SCRIPT_LOG_PREFIX)
|
||||
|
||||
# Manipulate the test result object
|
||||
for test_result in manager.results:
|
||||
LOGGER.info("%s %s:%s:%s", SCRIPT_LOG_PREFIX, test_result.name, test_result.test, test_result.result)
|
|
@ -50,6 +50,18 @@ anta.tests.aaa:
|
|||
- commands
|
||||
- dot1x
|
||||
|
||||
anta.tests.avt:
|
||||
- VerifyAVTPathHealth:
|
||||
- VerifyAVTSpecificPath:
|
||||
avt_paths:
|
||||
- avt_name: CONTROL-PLANE-PROFILE
|
||||
vrf: default
|
||||
destination: 10.101.255.2
|
||||
next_hop: 10.101.255.1
|
||||
path_type: direct
|
||||
- VerifyAVTRole:
|
||||
role: edge
|
||||
|
||||
anta.tests.bfd:
|
||||
- VerifyBFDSpecificPeers:
|
||||
bfd_peers:
|
||||
|
@ -167,6 +179,18 @@ anta.tests.interfaces:
|
|||
- 10.10.10.10/31
|
||||
- VerifyIpVirtualRouterMac:
|
||||
mac_address: 00:1c:73:00:dc:01
|
||||
- VerifyInterfacesSpeed:
|
||||
interfaces:
|
||||
- name: Ethernet2
|
||||
auto: False
|
||||
speed: 10
|
||||
- name: Eth3
|
||||
auto: True
|
||||
speed: 100
|
||||
lanes: 1
|
||||
- name: Eth2
|
||||
auto: False
|
||||
speed: 2.5
|
||||
|
||||
anta.tests.lanz:
|
||||
- VerifyLANZ:
|
||||
|
@ -210,6 +234,15 @@ anta.tests.multicast:
|
|||
- VerifyIGMPSnoopingGlobal:
|
||||
enabled: True
|
||||
|
||||
anta.tests.path_selection:
|
||||
- VerifyPathsHealth:
|
||||
- VerifySpecificPath:
|
||||
paths:
|
||||
- peer: 10.255.0.1
|
||||
path_group: internet
|
||||
source_address: 100.64.3.2
|
||||
destination_address: 100.64.1.2
|
||||
|
||||
anta.tests.profiles:
|
||||
- VerifyUnifiedForwardingTableMode:
|
||||
mode: 3
|
||||
|
@ -515,3 +548,29 @@ anta.tests.routing:
|
|||
- VerifyOSPFNeighborCount:
|
||||
number: 3
|
||||
- VerifyOSPFMaxLSA:
|
||||
isis:
|
||||
- VerifyISISNeighborState:
|
||||
- VerifyISISNeighborCount:
|
||||
interfaces:
|
||||
- name: Ethernet1
|
||||
level: 1
|
||||
count: 2
|
||||
- name: Ethernet2
|
||||
level: 2
|
||||
count: 1
|
||||
- name: Ethernet3
|
||||
count: 2
|
||||
# level is set to 2 by default
|
||||
- VerifyISISInterfaceMode:
|
||||
interfaces:
|
||||
- name: Loopback0
|
||||
mode: passive
|
||||
# vrf is set to default by default
|
||||
- name: Ethernet2
|
||||
mode: passive
|
||||
level: 2
|
||||
# vrf is set to default by default
|
||||
- name: Ethernet1
|
||||
mode: point-to-point
|
||||
vrf: default
|
||||
# level is set to 2 by default
|
Loading…
Add table
Add a link
Reference in a new issue