Skip to content

Commit 427504e

Browse files
Refactor(pyavd): Rename ANTA-related classes and modules to follow codebase conventions (#6498)
Co-authored-by: Guillaume Mulocher <gmulocher@arista.com>
1 parent 53a0fbe commit 427504e

31 files changed

Lines changed: 205 additions & 204 deletions

ansible_collections/arista/avd/plugins/action/anta_workflow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
try:
3030
from pyavd._anta.lib import AntaCatalog, AntaInventory, AsyncEOSDevice, MDReportGenerator, ReportCsv, ResultManager, TestResult, anta_runner
3131
from pyavd._utils import default, get, strip_empties_from_dict
32-
from pyavd.api._anta import AvdCatalogGenerationSettings, AvdFabricData
32+
from pyavd.api.anta import AVDCatalogGenerationSettings, AVDFabricData
3333
from pyavd.get_device_test_catalog import get_device_test_catalog
3434

3535
HAS_PYAVD = True
@@ -137,7 +137,7 @@
137137
# Global variables to share data between processes. Since the plugin is forked, these variables are inherited by child processes.
138138
# TODO: Consider aggregating some of them into a SHARED_VARS dict or use multiprocessing.Manager()
139139
STRUCTURED_CONFIGS: dict[str, dict[str, Any]] | None = None
140-
FABRIC_DATA: AvdFabricData | None = None
140+
FABRIC_DATA: AVDFabricData | None = None
141141
PLUGIN_ARGS: dict[str, Any] | None = None
142142
ANSIBLE_VARS: dict[str, dict[str, Any]] | None = None
143143
USER_CATALOG: AntaCatalog | None = None
@@ -216,7 +216,7 @@ def run(self, tmp: Any = None, task_vars: dict | None = None) -> dict:
216216
# Load the structured configs and build the minimal structured configs if needed
217217
if generate_avd_catalogs:
218218
STRUCTURED_CONFIGS = load_structured_configs(deployed_devices, structured_config_dir, get(PLUGIN_ARGS, "avd_catalogs.structured_config_suffix"))
219-
FABRIC_DATA = AvdFabricData.from_structured_configs(STRUCTURED_CONFIGS)
219+
FABRIC_DATA = AVDFabricData.from_structured_configs(STRUCTURED_CONFIGS)
220220

221221
with ProcessPoolExecutor(max_workers=max((ansible_forks - 1), 1), mp_context=get_context("fork")) as executor:
222222
batch_size = get(PLUGIN_ARGS, "runner.batch_size")
@@ -470,7 +470,7 @@ def build_anta_runner_objects(devices: list[str]) -> tuple[ResultManager, AntaIn
470470
inventory.add_device(anta_device)
471471
# We generate the device's AVD catalog only if structured configs are loaded
472472
if STRUCTURED_CONFIGS is not None and FABRIC_DATA is not None:
473-
settings = AvdCatalogGenerationSettings(
473+
settings = AVDCatalogGenerationSettings(
474474
extra_fabric_validation=extra_fabric_validation,
475475
output_dir=output_dir,
476476
**get_device_catalog_filters(device, avd_catalogs_filters),

docs/porting-guides/6.x.x.md

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,34 +1805,51 @@ See the PyAVD [migration example](#example-of-migration-from-pyavd-5x-to-600-for
18051805

18061806
In AVD 6.0.0, `pyavd.get_device_test_catalog` has undergone a few changes to improve maintainability.
18071807

1808+
#### `AvdCatalogGenerationSettings` renamed to `AVDCatalogGenerationSettings` and is now a Dataclass
1809+
1810+
`AvdCatalogGenerationSettings` has been renamed to `AVDCatalogGenerationSettings` and converted from a Pydantic model to a standard Python `dataclass`.
1811+
1812+
**Action Required:** If your code relies on Pydantic-specific methods (like validation error handling or serialization), updates are required.
1813+
1814+
```diff
1815+
+ from dataclasses import asdict
1816+
- from pyavd.api.anta import AvdCatalogGenerationSettings
1817+
+ from pyavd.api.anta import AVDCatalogGenerationSettings
1818+
1819+
settings = AVDCatalogGenerationSettings(run_tests=["VerifyReachability"])
1820+
1821+
- serialized_settings = settings.model_dump()
1822+
+ serialized_settings = asdict(settings)
1823+
```
1824+
18081825
#### Updated Function Signature
18091826

1810-
The function now accepts an `AvdFabricData` dataclass instance instead of a dictionary for the `minimal_structured_configs` argument. The argument name has changed to `fabric_data` for clarity.
1827+
The function now accepts an `AVDFabricData` dataclass instance instead of a dictionary for the `minimal_structured_configs` argument. The argument name has changed to `fabric_data` for clarity.
18111828

18121829
```diff
18131830
def get_device_test_catalog(
18141831
hostname: str,
18151832
structured_config: dict,
18161833
- minimal_structured_configs: dict[str, MinimalStructuredConfig],
1817-
+ fabric_data: AvdFabricData,
1818-
settings: AvdCatalogGenerationSettings | None = None,
1834+
+ fabric_data: AVDFabricData,
1835+
settings: AVDCatalogGenerationSettings | None = None,
18191836
) -> AntaCatalog
18201837
```
18211838

1822-
**Action Required:** Update your code to convert structured configurations into `AvdFabricData` before calling the function.
1839+
**Action Required:** Update your code to convert structured configurations into `AVDFabricData` before calling the function.
18231840

18241841
```diff
18251842
from pyavd import get_device_test_catalog
1826-
- from pyavd.api._anta import get_minimal_structured_configs
1827-
+ from pyavd.api._anta import AvdFabricData
1843+
- from pyavd.api.anta import get_minimal_structured_configs
1844+
+ from pyavd.api.anta import AVDFabricData
18281845
18291846
structured_configs = {
18301847
"DC1-LEAF1A": {"hostname": "DC1-LEAF1A"},
18311848
"DC1-LEAF1B": {"hostname": "DC1-LEAF1B"}
18321849
}
18331850
18341851
- minimal_structured_configs = get_minimal_structured_configs(structured_configs)
1835-
+ fabric_data = AvdFabricData.from_structured_configs(structured_configs)
1852+
+ fabric_data = AVDFabricData.from_structured_configs(structured_configs)
18361853
18371854
+ anta_catalog = get_device_test_catalog(
18381855
+ hostname="DC1-LEAF1A",
@@ -1844,7 +1861,7 @@ The function now accepts an `AvdFabricData` dataclass instance instead of a dict
18441861

18451862
#### Removal of `ignored_is_deployed` Setting
18461863

1847-
The `AvdCatalogGenerationSettings.ignored_is_deployed` attribute has been removed.
1864+
The `AVDCatalogGenerationSettings.ignored_is_deployed` attribute has been removed.
18481865

18491866
- **AVD 5.x:** The function checked `metadata.is_deployed` inside the structured config. If `False`, it returned an empty catalog *unless* `ignored_is_deployed` was set to `True`.
18501867
- **AVD 6.0.0:** The function *always* generates a catalog, ignoring the `metadata.is_deployed` key.
@@ -1853,12 +1870,12 @@ The `AvdCatalogGenerationSettings.ignored_is_deployed` attribute has been remove
18531870

18541871
```diff
18551872
from pyavd import get_device_test_catalog
1856-
from pyavd.api._anta import AvdFabricData
1873+
from pyavd.api.anta import AVDFabricData
18571874
18581875
dc1_leaf1a_structured_config = {"hostname": "DC1-LEAF1A", "metadata": {"is_deployed": False}}
18591876
18601877
structured_configs = {"DC1-LEAF1A": dc1_leaf1a_structured_config}
1861-
fabric_data = AvdFabricData.from_structured_configs(structured_configs)
1878+
fabric_data = AVDFabricData.from_structured_configs(structured_configs)
18621879
18631880
- anta_catalog = get_device_test_catalog(hostname="DC1-LEAF1A", structured_config=dc1_leaf1a_structured_config, fabric_data=fabric_data)
18641881
+ is_deployed = dc1_leaf1a_structured_config.get("metadata", {}).get("is_deployed", True) is True
@@ -1868,14 +1885,14 @@ The `AvdCatalogGenerationSettings.ignored_is_deployed` attribute has been remove
18681885

18691886
#### Removal of `input_factory_settings` Setting
18701887

1871-
The `AvdCatalogGenerationSettings.input_factory_settings` attribute, previously used to globally enable BGP validation for VRF peers, has been removed. Control has moved to the device structured configuration.
1888+
The `AVDCatalogGenerationSettings.input_factory_settings` attribute, previously used to globally enable BGP validation for VRF peers, has been removed. Control has moved to the device structured configuration.
18721889

18731890
**Action Required:** Instead of passing `InputFactorySettings(allow_bgp_vrfs=True)`, you must now set `metadata.validate_state` to `True` on specific BGP neighbors or neighbor interfaces (RFC5549) within the structured configuration.
18741891

18751892
```diff
18761893
from pyavd import get_device_test_catalog
1877-
- from pyavd.api._anta import AvdCatalogGenerationSettings, AvdFabricData, InputFactorySettings
1878-
+ from pyavd.api._anta import AvdCatalogGenerationSettings, AvdFabricData
1894+
- from pyavd.api.anta import AVDCatalogGenerationSettings, AVDFabricData, InputFactorySettings
1895+
+ from pyavd.api.anta import AVDCatalogGenerationSettings, AVDFabricData
18791896
18801897
# Update structured config to enable validation per neighbor/VRF
18811898
- dc1_leaf1a_structured_config = {"hostname": "DC1-LEAF1A"}
@@ -1893,10 +1910,10 @@ The `AvdCatalogGenerationSettings.input_factory_settings` attribute, previously
18931910
+ }
18941911
18951912
structured_configs = {"DC1-LEAF1A": dc1_leaf1a_structured_config}
1896-
fabric_data = AvdFabricData.from_structured_configs(structured_configs)
1913+
fabric_data = AVDFabricData.from_structured_configs(structured_configs)
18971914
18981915
- input_factory_settings = InputFactorySettings(allow_bgp_vrfs=True)
1899-
- settings = AvdCatalogGenerationSettings(input_factory_settings=input_factory_settings)
1916+
- settings = AVDCatalogGenerationSettings(input_factory_settings=input_factory_settings)
19001917
19011918
anta_catalog = get_device_test_catalog(
19021919
hostname="DC1-LEAF1A",
@@ -1908,9 +1925,9 @@ The `AvdCatalogGenerationSettings.input_factory_settings` attribute, previously
19081925

19091926
#### Changes to `custom_test_specs` Setting
19101927

1911-
For users generating catalogs with custom test specifications, the `AvdCatalogGenerationSettings.custom_test_specs` attribute now expects a tuple of `AvdTestSpec` dataclass instances.
1928+
For users generating catalogs with custom test specifications, the `AVDCatalogGenerationSettings.custom_test_specs` attribute now expects a tuple of `AVDTestSpec` dataclass instances.
19121929

1913-
Additionally, the `conditional_keys` attribute has been removed from `AvdTestSpec`. Logic for skipping tests based on missing configuration must now be handled within the test factory implementation itself, using the `skip_if_missing_config` decorator.
1930+
Additionally, the `conditional_keys` attribute has been removed from `AVDTestSpec`. Logic for skipping tests based on missing configuration must now be handled within the test factory implementation itself, using the `skip_if_missing_config` decorator.
19141931

19151932
**Action Required:** Update your custom test specs to use the new dataclass and move conditional logic to the factory.
19161933

@@ -1919,9 +1936,9 @@ Additionally, the `conditional_keys` attribute has been removed from `AvdTestSpe
19191936
from anta.tests.connectivity import VerifyReachability
19201937
19211938
+ from pyavd._anta.constants import StructuredConfigKey
1922-
+ from pyavd._anta.input_factories._decorators import skip_if_missing_config
1923-
- from pyavd.api._anta import AvdCatalogGenerationSettings, TestSpec
1924-
+ from pyavd.api._anta import AvdCatalogGenerationSettings, AvdTestSpec
1939+
+ from pyavd._anta.input_factories.decorators import skip_if_missing_config
1940+
- from pyavd.api.anta import AVDCatalogGenerationSettings, TestSpec
1941+
+ from pyavd.api.anta import AVDCatalogGenerationSettings, AVDTestSpec
19251942
19261943
class CustomVerifyReachabilityInputFactory(AntaTestInputFactory[VerifyReachability.Input]):
19271944
"""Custom input factory class for the `VerifyReachability` test."""
@@ -1931,29 +1948,13 @@ Additionally, the `conditional_keys` attribute has been removed from `AvdTestSpe
19311948
# Custom logic to generate the inputs
19321949
...
19331950

1934-
+ test_spec = AvdTestSpec(
1951+
+ test_spec = AVDTestSpec(
19351952
+ test_class=VerifyReachability,
19361953
- conditional_keys=[StructuredConfigKey.ETHERNET_INTERFACES],
19371954
+ input_factory=CustomVerifyReachabilityInputFactory
19381955
+ )
19391956

1940-
settings = AvdCatalogGenerationSettings(custom_test_specs=(test_spec,))
1941-
```
1942-
1943-
#### `AvdCatalogGenerationSettings` is now a Dataclass
1944-
1945-
`AvdCatalogGenerationSettings` has been converted from a Pydantic model to a standard Python `dataclass`.
1946-
1947-
**Action Required:** If your code relies on Pydantic-specific methods (like validation error handling or serialization), updates are required.
1948-
1949-
```diff
1950-
+ from dataclasses import asdict
1951-
from pyavd.api._anta import AvdCatalogGenerationSettings
1952-
1953-
settings = AvdCatalogGenerationSettings(run_tests=["VerifyReachability"])
1954-
1955-
- serialized_settings = settings.model_dump()
1956-
+ serialized_settings = asdict(settings)
1957+
settings = AVDCatalogGenerationSettings(custom_test_specs=(test_spec,))
19571958
```
19581959

19591960
### Example of migration from PyAVD 5.x to 6.0.0 for a small build script

python-avd/pyavd/_anta/factories.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
if TYPE_CHECKING:
1515
from collections.abc import Iterator
1616

17-
from pyavd.api._anta import AvdTestSpec
17+
from pyavd.api.anta import AVDTestSpec
1818

1919
from .models import InputFactoryDataSource
2020

2121

22-
def create_catalog(data_source: InputFactoryDataSource, test_specs: list[AvdTestSpec]) -> AntaCatalog:
22+
def create_catalog(data_source: InputFactoryDataSource, test_specs: list[AVDTestSpec]) -> AntaCatalog:
2323
"""Create an ANTA catalog for a device from the provided test specs."""
2424
all_test_defs_iterator = chain.from_iterable(create_test_definitions(test_spec, data_source) for test_spec in test_specs)
2525

@@ -31,8 +31,8 @@ def create_catalog(data_source: InputFactoryDataSource, test_specs: list[AvdTest
3131
return AntaCatalog(tests=tests)
3232

3333

34-
def create_test_definitions(test_spec: AvdTestSpec, data_source: InputFactoryDataSource) -> Iterator[AntaTestDefinition]:
35-
"""Generate the AntaTestDefinition from this AvdTestSpec instance."""
34+
def create_test_definitions(test_spec: AVDTestSpec, data_source: InputFactoryDataSource) -> Iterator[AntaTestDefinition]:
35+
"""Generate the AntaTestDefinition from this AVDTestSpec instance."""
3636
# Generate the test definitions from the input factory if provided
3737
if test_spec.input_factory is not None:
3838
factory = test_spec.input_factory(data_source, test_spec.test_class.name)

python-avd/pyavd/_anta/index.py

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,50 @@
77

88
from pyavd._anta.input_factories import *
99
from pyavd._anta.lib.tests import *
10-
from pyavd.api._anta.avd_test_spec import AvdTestSpec
10+
from pyavd.api.anta.avd_test_spec import AVDTestSpec
1111

12-
AVD_TEST_INDEX: list[AvdTestSpec] = [
13-
AvdTestSpec(test_class=VerifyAgentLogs),
14-
AvdTestSpec(test_class=VerifyAPIHttpsSSL, input_factory=VerifyAPIHttpsSSLInputFactory),
15-
AvdTestSpec(test_class=VerifyAVTSpecificPath, input_factory=VerifyAVTSpecificPathInputFactory),
16-
AvdTestSpec(test_class=VerifyBGPPeerSession, input_factory=VerifyBGPPeerSessionInputFactory),
17-
AvdTestSpec(test_class=VerifyCoredump),
18-
AvdTestSpec(test_class=VerifyEnvironmentCooling, input_factory=VerifyEnvironmentCoolingInputFactory),
19-
AvdTestSpec(test_class=VerifyEnvironmentPower, input_factory=VerifyEnvironmentPowerInputFactory),
20-
AvdTestSpec(test_class=VerifyEnvironmentSystemCooling, input_factory=VerifyEnvironmentSystemCoolingInputFactory),
21-
AvdTestSpec(test_class=VerifyFileSystemUtilization),
22-
AvdTestSpec(test_class=VerifyIllegalLACP, input_factory=VerifyIllegalLACPInputFactory),
23-
AvdTestSpec(test_class=VerifyInterfaceDiscards),
24-
AvdTestSpec(test_class=VerifyInterfaceErrDisabled),
25-
AvdTestSpec(test_class=VerifyInterfaceErrors),
26-
AvdTestSpec(test_class=VerifyInterfaceUtilization),
27-
AvdTestSpec(test_class=VerifyInterfacesStatus, input_factory=VerifyInterfacesStatusInputFactory),
28-
AvdTestSpec(test_class=VerifyInventory, input_factory=VerifyInventoryInputFactory),
29-
AvdTestSpec(test_class=VerifyPortChannels, input_factory=VerifyPortChannelsInputFactory),
30-
AvdTestSpec(test_class=VerifyRunningConfigDiffs),
31-
AvdTestSpec(test_class=VerifyStormControlDrops, input_factory=VerifyStormControlDropsInputFactory),
32-
AvdTestSpec(test_class=VerifyLLDPNeighbors, input_factory=VerifyLLDPNeighborsInputFactory),
33-
AvdTestSpec(test_class=VerifyLoggingErrors, input_factory=VerifyLoggingErrorsInputFactory),
34-
AvdTestSpec(test_class=VerifyMaintenance),
35-
AvdTestSpec(test_class=VerifyMemoryUtilization),
36-
AvdTestSpec(test_class=VerifyMlagConfigSanity, input_factory=VerifyMlagConfigSanityInputFactory),
37-
AvdTestSpec(test_class=VerifyMlagInterfaces, input_factory=VerifyMlagInterfacesInputFactory),
38-
AvdTestSpec(test_class=VerifyMlagStatus, input_factory=VerifyMlagStatusInputFactory),
39-
AvdTestSpec(test_class=VerifyNTP),
40-
AvdTestSpec(test_class=VerifyOSPFNeighborState, input_factory=VerifyOSPFNeighborStateInputFactory),
41-
AvdTestSpec(test_class=VerifyOSPFMaxLSA, input_factory=VerifyOSPFMaxLSAInputFactory),
42-
AvdTestSpec(test_class=VerifySpecificPath, input_factory=VerifySpecificPathInputFactory),
43-
AvdTestSpec(test_class=VerifyReachability, input_factory=VerifyReachabilityInputFactory),
44-
AvdTestSpec(test_class=VerifyReloadCause, input_factory=VerifyReloadCauseInputFactory),
45-
AvdTestSpec(test_class=VerifyRoutingProtocolModel, input_factory=VerifyRoutingProtocolModelInputFactory),
46-
AvdTestSpec(test_class=VerifyRoutingTableEntry, input_factory=VerifyRoutingTableEntryInputFactory),
47-
AvdTestSpec(test_class=VerifySpecificIPSecConn, input_factory=VerifySpecificIPSecConnInputFactory),
48-
AvdTestSpec(test_class=VerifySTPCounters),
49-
AvdTestSpec(test_class=VerifyTemperature, input_factory=VerifyTemperatureInputFactory),
50-
AvdTestSpec(test_class=VerifyTransceiversManufacturers, input_factory=VerifyTransceiversManufacturersInputFactory),
51-
AvdTestSpec(test_class=VerifyTransceiversTemperature, input_factory=VerifyTransceiversTemperatureInputFactory),
52-
AvdTestSpec(test_class=VerifyVxlanConfigSanity, input_factory=VerifyVxlanConfigSanityInputFactory),
53-
AvdTestSpec(test_class=VerifyZeroTouch),
12+
AVD_TEST_INDEX: list[AVDTestSpec] = [
13+
AVDTestSpec(test_class=VerifyAgentLogs),
14+
AVDTestSpec(test_class=VerifyAPIHttpsSSL, input_factory=VerifyAPIHttpsSSLInputFactory),
15+
AVDTestSpec(test_class=VerifyAVTSpecificPath, input_factory=VerifyAVTSpecificPathInputFactory),
16+
AVDTestSpec(test_class=VerifyBGPPeerSession, input_factory=VerifyBGPPeerSessionInputFactory),
17+
AVDTestSpec(test_class=VerifyCoredump),
18+
AVDTestSpec(test_class=VerifyEnvironmentCooling, input_factory=VerifyEnvironmentCoolingInputFactory),
19+
AVDTestSpec(test_class=VerifyEnvironmentPower, input_factory=VerifyEnvironmentPowerInputFactory),
20+
AVDTestSpec(test_class=VerifyEnvironmentSystemCooling, input_factory=VerifyEnvironmentSystemCoolingInputFactory),
21+
AVDTestSpec(test_class=VerifyFileSystemUtilization),
22+
AVDTestSpec(test_class=VerifyIllegalLACP, input_factory=VerifyIllegalLACPInputFactory),
23+
AVDTestSpec(test_class=VerifyInterfaceDiscards),
24+
AVDTestSpec(test_class=VerifyInterfaceErrDisabled),
25+
AVDTestSpec(test_class=VerifyInterfaceErrors),
26+
AVDTestSpec(test_class=VerifyInterfaceUtilization),
27+
AVDTestSpec(test_class=VerifyInterfacesStatus, input_factory=VerifyInterfacesStatusInputFactory),
28+
AVDTestSpec(test_class=VerifyInventory, input_factory=VerifyInventoryInputFactory),
29+
AVDTestSpec(test_class=VerifyPortChannels, input_factory=VerifyPortChannelsInputFactory),
30+
AVDTestSpec(test_class=VerifyRunningConfigDiffs),
31+
AVDTestSpec(test_class=VerifyStormControlDrops, input_factory=VerifyStormControlDropsInputFactory),
32+
AVDTestSpec(test_class=VerifyLLDPNeighbors, input_factory=VerifyLLDPNeighborsInputFactory),
33+
AVDTestSpec(test_class=VerifyLoggingErrors, input_factory=VerifyLoggingErrorsInputFactory),
34+
AVDTestSpec(test_class=VerifyMaintenance),
35+
AVDTestSpec(test_class=VerifyMemoryUtilization),
36+
AVDTestSpec(test_class=VerifyMlagConfigSanity, input_factory=VerifyMlagConfigSanityInputFactory),
37+
AVDTestSpec(test_class=VerifyMlagInterfaces, input_factory=VerifyMlagInterfacesInputFactory),
38+
AVDTestSpec(test_class=VerifyMlagStatus, input_factory=VerifyMlagStatusInputFactory),
39+
AVDTestSpec(test_class=VerifyNTP),
40+
AVDTestSpec(test_class=VerifyOSPFNeighborState, input_factory=VerifyOSPFNeighborStateInputFactory),
41+
AVDTestSpec(test_class=VerifyOSPFMaxLSA, input_factory=VerifyOSPFMaxLSAInputFactory),
42+
AVDTestSpec(test_class=VerifySpecificPath, input_factory=VerifySpecificPathInputFactory),
43+
AVDTestSpec(test_class=VerifyReachability, input_factory=VerifyReachabilityInputFactory),
44+
AVDTestSpec(test_class=VerifyReloadCause, input_factory=VerifyReloadCauseInputFactory),
45+
AVDTestSpec(test_class=VerifyRoutingProtocolModel, input_factory=VerifyRoutingProtocolModelInputFactory),
46+
AVDTestSpec(test_class=VerifyRoutingTableEntry, input_factory=VerifyRoutingTableEntryInputFactory),
47+
AVDTestSpec(test_class=VerifySpecificIPSecConn, input_factory=VerifySpecificIPSecConnInputFactory),
48+
AVDTestSpec(test_class=VerifySTPCounters),
49+
AVDTestSpec(test_class=VerifyTemperature, input_factory=VerifyTemperatureInputFactory),
50+
AVDTestSpec(test_class=VerifyTransceiversManufacturers, input_factory=VerifyTransceiversManufacturersInputFactory),
51+
AVDTestSpec(test_class=VerifyTransceiversTemperature, input_factory=VerifyTransceiversTemperatureInputFactory),
52+
AVDTestSpec(test_class=VerifyVxlanConfigSanity, input_factory=VerifyVxlanConfigSanityInputFactory),
53+
AVDTestSpec(test_class=VerifyZeroTouch),
5454
]
5555
"""List of all ANTA tests with their specifications that AVD will run by default."""
5656

0 commit comments

Comments
 (0)