diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a33a0522841..d3f373a91de 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: exclude_types: [svg, json] exclude: ansible_collections/arista/avd/molecule - id: check-added-large-files - exclude: ansible_collections/arista/avd/molecule + exclude: (ansible_collections/arista/avd/molecule|pickle$) - id: check-merge-conflict exclude: ansible_collections/arista/avd/molecule @@ -153,15 +153,8 @@ repos: files: ansible_collections/arista/avd/plugins/vars/ - id: schemas - name: Build AVD Schemas - entry: sh -c 'exec env ANSIBLE_COLLECTIONS_PATHS=`pwd` ansible-playbook --forks 10 arista.avd._build_schemas' - language: system - files: ansible_collections/arista/avd/roles/[a-z_]+/schemas - pass_filenames: false - - - id: schemas - name: Build AVD Docs - entry: sh -c 'exec python-avd/scripts/build-schema-tables.py' + name: Build AVD Schemas and Docs + entry: sh -c 'exec python-avd/scripts/build-schemas.py' language: system files: ansible_collections/arista/avd/roles/[a-z_]+/schemas pass_filenames: false diff --git a/ansible_collections/arista/avd/docs/plugins/Filter_plugins/convert_schema.md b/ansible_collections/arista/avd/docs/plugins/Filter_plugins/convert_schema.md deleted file mode 100644 index a59f8da9def..00000000000 --- a/ansible_collections/arista/avd/docs/plugins/Filter_plugins/convert_schema.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -# This title is used for search results -title: arista.avd.convert_schema ---- - - -# convert_schema - -!!! note - Always use the FQCN (Fully Qualified Collection Name) `arista.avd.convert_schema` when using this plugin. - -Convert AVD Schema to a chosen output format. - -## Synopsis - -Only for internal use. - -## Parameters - -| Argument | Type | Required | Default | Value Restrictions | Description | -| -------- | ---- | -------- | ------- | ------------------ | ----------- | -| _input | string | True | None | Valid values:
- eos_cli_config_gen
- eos_designs | ID of AVD Schema. | -| type | string | True | None | Valid values:
- documentation_tables
- jsonschema | Type of schema to convert to. | - -## Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _value | any | Schema of the requested type. | - -## Authors - -- Arista Ansible Team (@aristanetworks) diff --git a/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/batch_template.md b/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/batch_template.md index 90307b95f8d..ec2df42004c 100644 --- a/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/batch_template.md +++ b/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/batch_template.md @@ -39,9 +39,7 @@ Destination file mode is hardcoded to 0o664. arista.avd.batch_template: template: avd_schema_documentation.j2 dest_format_str: "{{ role_documentation_dir }}/{item}.md" - items: "{{ documentation_schema | list }}" - vars: - documentation_schema: "{{ role_name | arista.avd.convert_schema(type='documentation') }}" + items: "{{ data_in_list_form }}" ``` ## Authors diff --git a/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/validate_and_template.md b/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/validate_and_template.md index 2cda8bfec5b..76acd6c3926 100644 --- a/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/validate_and_template.md +++ b/ansible_collections/arista/avd/docs/plugins/Modules_and_action_plugins/validate_and_template.md @@ -38,6 +38,7 @@ For Markdown files the plugin can also run md\_toc on the output before writing | md_toc_skip_lines | int | False | 0 | | Pass this value as skip\_lines to add\_md\_toc. | | conversion_mode | str | False | debug | Valid values:
- warning
- info
- debug
- quiet
- disabled | Run data conversion in either \"warning\", \"info\", \"debug\", \"quiet\" or \"disabled\" mode.
Conversion will perform type conversion of input variables as defined in the schema.
Conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.
During conversion, messages will generated with information about the host\(s\) and key\(s\) which required conversion.
conversion\_mode\:disabled means that conversion will not run.
conversion\_mode\:error will produce error messages and fail the task.
conversion\_mode\:warning will produce warning messages.
conversion\_mode\:info will produce regular log messages.
conversion\_mode\:debug will produce hidden messages viewable with \-v.
conversion\_mode\:quiet will not produce any messages. | | validation_mode | str | False | warning | Valid values:
- error
- warning
- info
- debug
- disabled | Run validation in either \"error\", \"warning\", \"info\", \"debug\" or \"disabled\" mode.
Validation will validate the input variables according to the schema.
During validation, messages will generated with information about the host\(s\) and key\(s\) which failed validation.
validation\_mode\:disabled means that validation will not run.
validation\_mode\:error will produce error messages and fail the task.
validation\_mode\:warning will produce warning messages.
validation\_mode\:info will produce regular log messages.
validation\_mode\:debug will produce hidden messages viewable with \-v. | +| cprofile_file | str | False | None | | Filename for storing cprofile data used to debug performance issues.
Running cprofile will slow down performance in itself, so only set this while troubleshooting. | ## Examples diff --git a/ansible_collections/arista/avd/playbooks/_build_schemas.yml b/ansible_collections/arista/avd/playbooks/_build_schemas.yml deleted file mode 100644 index 80aed4de7d6..00000000000 --- a/ansible_collections/arista/avd/playbooks/_build_schemas.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Create AVD Schemas - hosts: localhost - gather_facts: false - tasks: - - name: Gather AVD Schema Fragments for eos_cli_config_gen - ansible.builtin.import_role: - name: arista.avd.eos_cli_config_gen - tasks_from: build-schemas - - - name: Gather AVD Schema Fragments for eos_designs - ansible.builtin.import_role: - name: arista.avd.eos_designs - tasks_from: build-schemas diff --git a/ansible_collections/arista/avd/plugins/action/validate_and_template.py b/ansible_collections/arista/avd/plugins/action/validate_and_template.py index 043e49e14bb..0af8126ea15 100644 --- a/ansible_collections/arista/avd/plugins/action/validate_and_template.py +++ b/ansible_collections/arista/avd/plugins/action/validate_and_template.py @@ -5,6 +5,9 @@ __metaclass__ = type +import cProfile +import pstats + from ansible.errors import AnsibleActionFail from ansible.plugins.action import ActionBase, display @@ -21,6 +24,11 @@ def run(self, tmp=None, task_vars=None): result = super().run(tmp, task_vars) del tmp # tmp no longer has any effect + cprofile_file = self._task.args.get("cprofile_file") + if cprofile_file: + profiler = cProfile.Profile() + profiler.enable() + # Validate Arguments self.templatefile = self._task.args.get("template") if not isinstance(self.templatefile, str): @@ -78,6 +86,11 @@ def run(self, tmp=None, task_vars=None): if not result.get("failed"): result.update(self.template(task_vars, dest)) + if cprofile_file: + profiler.disable() + stats = pstats.Stats(profiler).sort_stats("cumtime") + stats.dump_stats(cprofile_file) + return result def template(self, task_vars, dest): diff --git a/ansible_collections/arista/avd/plugins/filter/convert_schema.py b/ansible_collections/arista/avd/plugins/filter/convert_schema.py deleted file mode 100644 index 75acdab58e2..00000000000 --- a/ansible_collections/arista/avd/plugins/filter/convert_schema.py +++ /dev/null @@ -1,94 +0,0 @@ -# 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. -from __future__ import absolute_import, division, print_function - -__metaclass__ = type - -from ansible.errors import AnsibleFilterError -from ansible.utils.display import Display - -from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdError -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschema import AvdSchema -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschematools import AvdSchemaTools -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdtodocumentationschemaconverter import AvdToDocumentationSchemaConverter -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdtojsonschemaconverter import AvdToJsonSchemaConverter - -DOCUMENTATION = r""" ---- -name: convert_schema -collection: arista.avd -author: Arista Ansible Team (@aristanetworks) -version_added: "3.8" -short_description: Convert AVD Schema to a chosen output format. -description: Only for internal use. -positional: _input -options: - _input: - type: string - description: ID of AVD Schema. - required: true - choices: ["eos_cli_config_gen" , "eos_designs"] - type: - type: string - description: Type of schema to convert to. - required: true - choices: ["documentation_tables", "jsonschema"] -""" - -RETURN = r""" ---- -_value: - description: Schema of the requested type. - type: any -""" - - -def convert_schema(schema_id: str, type: str): - """ - The `arista.avd.convert_schema` filter will convert AVD Schema to a chosen output format. - - TODO: Split into separate filters or lookups for each type. - - Parameters - ---------- - schema_id : str, ["eos_cli_config_gen" , "eos_designs"] - ID of AVD Schema - type : str, ["documentation_tables", "jsonschema"] - Type of schema to convert to - - Returns - ------- - dict | list - Schema of the requested type - - Raises - ------ - AvdSchemaError, AvdValidationError - If the input schema is not valid, exceptions will be raised accordingly. - """ - avdschema = AvdSchema(schema_id=schema_id) - - # Validate that the loaded schema follows the meta schema - avdschematools = AvdSchemaTools( - hostname="schema converter", ansible_display=Display(), schema_id=schema_id, conversion_mode="disabled", validation_mode="error" - ) - validation_results = avdschematools.validate_schema() - if validation_results: - raise AnsibleFilterError("Invalid schema!") - - if type == "documentation_tables": - return AvdToDocumentationSchemaConverter(avdschema).convert_schema_to_tables() - - elif type == "jsonschema": - return AvdToJsonSchemaConverter(avdschema).convert_schema() - - else: - raise AristaAvdError(f"Filter arista.avd.convert_schema requires type 'documentation_tables' or 'jsonschema'. Got {type}") - - -class FilterModule(object): - def filters(self): - return { - "convert_schema": convert_schema, - } diff --git a/ansible_collections/arista/avd/plugins/modules/batch_template.py b/ansible_collections/arista/avd/plugins/modules/batch_template.py index 2aeb8cb40b8..4402c010b6d 100644 --- a/ansible_collections/arista/avd/plugins/modules/batch_template.py +++ b/ansible_collections/arista/avd/plugins/modules/batch_template.py @@ -35,7 +35,5 @@ arista.avd.batch_template: template: avd_schema_documentation.j2 dest_format_str: "{{ role_documentation_dir }}/{item}.md" - items: "{{ documentation_schema | list }}" - vars: - documentation_schema: "{{ role_name | arista.avd.convert_schema(type='documentation') }}" + items: "{{ data_in_list_form }}" """ diff --git a/ansible_collections/arista/avd/plugins/modules/validate_and_template.py b/ansible_collections/arista/avd/plugins/modules/validate_and_template.py index df0a4f9d69e..d4c75942718 100644 --- a/ansible_collections/arista/avd/plugins/modules/validate_and_template.py +++ b/ansible_collections/arista/avd/plugins/modules/validate_and_template.py @@ -75,6 +75,12 @@ default: "warning" type: str choices: [ "error", "warning", "info", "debug", "disabled" ] + cprofile_file: + description: + - Filename for storing cprofile data used to debug performance issues. + - Running cprofile will slow down performance in itself, so only set this while troubleshooting. + required: false + type: str """ EXAMPLES = r""" diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/uplinks.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/uplinks.py index 9e8c9f5cac1..2c98aebc79f 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/uplinks.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/uplinks.py @@ -8,7 +8,6 @@ from typing import TYPE_CHECKING from ansible_collections.arista.avd.plugins.filter.list_compress import list_compress -from ansible_collections.arista.avd.plugins.filter.natural_sort import natural_sort from ansible_collections.arista.avd.plugins.filter.range_expand import range_expand from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdError, AristaAvdMissingVariableError from ansible_collections.arista.avd.plugins.plugin_utils.utils import append_if_not_duplicate, default, get, unique @@ -377,7 +376,7 @@ def uplink_peers(self: EosDesignsFacts) -> list: """ uplink_switches = self.shared_utils.uplink_switches # Making sure each peer is unique - return natural_sort(unique(uplink_switch for uplink_switch in uplink_switches if uplink_switch in self.shared_utils.all_fabric_devices)) + return unique(uplink_switch for uplink_switch in uplink_switches if uplink_switch in self.shared_utils.all_fabric_devices) @cached_property def _default_downlink_interfaces(self: EosDesignsFacts) -> list: diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/vlans.py b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/vlans.py index e2cc840dec1..7b1500e5db4 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/vlans.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/eos_designs_facts/vlans.py @@ -9,7 +9,6 @@ from ansible_collections.arista.avd.plugins.filter.convert_dicts import convert_dicts from ansible_collections.arista.avd.plugins.filter.list_compress import list_compress -from ansible_collections.arista.avd.plugins.filter.natural_sort import natural_sort from ansible_collections.arista.avd.plugins.filter.range_expand import range_expand from ansible_collections.arista.avd.plugins.plugin_utils.utils import get @@ -252,22 +251,28 @@ def _vlans(self: EosDesignsFacts) -> list[int]: endpoint_vlans = self._endpoint_vlans for network_services_key in self.shared_utils.network_services_keys: - tenants = get(self._hostvars, network_services_key["name"]) + tenants = get(self._hostvars, network_services_key["name"], default=[]) # Support legacy data model by converting nested dict to list of dict - tenants = convert_dicts(tenants, "name") - for tenant in natural_sort(tenants, "name"): + if isinstance(tenants, dict): + tenants = convert_dicts(tenants, "name") + + for tenant in tenants: if not set(self.shared_utils.filter_tenants).intersection([tenant["name"], "all"]): # Not matching tenant filters. Skipping this tenant. continue vrfs = tenant.get("vrfs", []) # Support legacy data model by converting nested dict to list of dict - vrfs = convert_dicts(vrfs, "name") - for vrf in natural_sort(vrfs, "name"): + if isinstance(vrfs, dict): + vrfs = convert_dicts(vrfs, "name") + + for vrf in vrfs: svis = vrf.get("svis", []) # Support legacy data model by converting nested dict to list of dict - svis = convert_dicts(svis, "id") - for svi in natural_sort(svis, "id"): + if isinstance(svis, dict): + svis = convert_dicts(svis, "id") + + for svi in svis: svi_tags = svi.get("tags", ["all"]) if "all" in match_tags or set(svi_tags).intersection(match_tags): if self.shared_utils.filter_only_vlans_in_use: @@ -289,9 +294,10 @@ def _vlans(self: EosDesignsFacts) -> list[int]: l2vlans = tenant.get("l2vlans", []) # Support legacy data model by converting nested dict to list of dict - l2vlans = convert_dicts(l2vlans, "id") + if isinstance(l2vlans, dict): + l2vlans = convert_dicts(l2vlans, "id") - for l2vlan in natural_sort(l2vlans, "id"): + for l2vlan in l2vlans: l2vlan_tags = l2vlan.get("tags", ["all"]) if "all" in match_tags or set(l2vlan_tags).intersection(match_tags): if self.shared_utils.filter_only_vlans_in_use: diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.pickle b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.pickle new file mode 100644 index 00000000000..8ed1d44791e Binary files /dev/null and b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.pickle differ diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avddataconverter.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avddataconverter.py index 4560ccdb9db..de54f6cba99 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avddataconverter.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avddataconverter.py @@ -3,7 +3,7 @@ # that can be found in the LICENSE file. from __future__ import annotations -from typing import Generator +from typing import TYPE_CHECKING, Generator from ansible_collections.arista.avd.plugins.filter.convert_dicts import convert_dicts from ansible_collections.arista.avd.plugins.plugin_utils.errors import AvdConversionWarning, AvdDeprecationWarning @@ -23,16 +23,16 @@ "bool": bool, } +if TYPE_CHECKING: + from .avdschema import AvdSchema + class AvdDataConverter: """ AvdDataConverter is used to convert AVD Data Types based on schema options. - - avdschema argument is an instance of AvdSchema. Type hinting is not working because of circular import - TODO: Refactor to take a fully resolved schema as dict """ - def __init__(self, avdschema): + def __init__(self, avdschema: AvdSchema): self._avdschema = avdschema # We run through all the regular keys first, to ensure that all data has been converted @@ -44,15 +44,11 @@ def __init__(self, avdschema): "deprecation": self.deprecation, } - def convert_data(self, data, schema: dict = None, path: list[str] = None) -> Generator: + def convert_data(self, data, schema: dict, path: list[str] = None) -> Generator: """ Perform in-place conversion of data according to the provided schema. Main entry function which is recursively called from the child functions performing the actual conversion of keys/items. """ - if schema is None: - # Get fully resolved schema (where all $ref has been expanded recursively) - schema = self._avdschema.resolved_schema - if path is None: path = [] diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdschema.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdschema.py index 31d3ab3ef52..e4d117530e5 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdschema.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdschema.py @@ -44,15 +44,17 @@ class AvdSchema: AVD Schema as dictionary. Will be validated towards AVD_META_SCHEMA. schema_id : str ID of AVD Schema. Either 'eos_cli_config_gen' or 'eos_designs' + load_store_from_yaml : bool + Force loading the YAML schema files into the store. By default schemas are loaded from pickled files. """ - def __init__(self, schema: dict = None, schema_id: str = None): + def __init__(self, schema: dict = None, schema_id: str = None, load_store_from_yaml=False): if JSONSCHEMA_IMPORT_ERROR: raise AristaAvdError('Python library "jsonschema" must be installed to use this plugin') from JSONSCHEMA_IMPORT_ERROR if DEEPMERGE_IMPORT_ERROR: raise AristaAvdError('Python library "deepmerge" must be installed to use this plugin') from DEEPMERGE_IMPORT_ERROR - self.store = create_store() + self.store = create_store(load_from_yaml=load_store_from_yaml) self._schema_validator = jsonschema.Draft7Validator(self.store["avd_meta_schema"]) self.load_schema(schema, schema_id) @@ -119,7 +121,7 @@ def validate(self, data): yield self._error_handler(error) def convert(self, data): - conversion_errors = self._dataconverter.convert_data(data) + conversion_errors = self._dataconverter.convert_data(data, self._schema) try: for conversion_error in conversion_errors: @@ -202,7 +204,7 @@ def subschema(self, datapath: list): if not isinstance(datapath, list): raise AvdSchemaError(f"The datapath argument must be a list. Got {type(datapath)}") - schema = self.resolved_schema + schema = self._schema def recursive_function(datapath, schema): """ diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtojsonschemaconverter.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtojsonschemaconverter.py index 59d09399de2..4e6e4b28836 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtojsonschemaconverter.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtojsonschemaconverter.py @@ -3,11 +3,53 @@ # that can be found in the LICENSE file. from __future__ import annotations -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschema import AvdSchema -from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdtodocumentationschemaconverter import get_deprecation from ansible_collections.arista.avd.plugins.plugin_utils.schema.key_to_display_name import key_to_display_name +def get_deprecation(schema: dict) -> tuple[str, str]: + """ + Build deprecation details for documentation if deprecation is set on the schema element. + + This function is also imported into avdtojsonschemaconverter + + Returns + ------- + deprecation_label : str | None + If deprecated or removed this is "deprecated" or "removed" . Should be added as label + on the key by the calling function. + deprecation : str | None + Deprecation or removal message which should be added to the key comment field by the calling function. + """ + if (deprecation := schema.get("deprecation")) is None: + return None, None + + if removed := deprecation.get("removed"): + removed_verb = "was" + state_verb = "was" + state = "removed" + else: + removed_verb = "will be" + state_verb = "is" + state = "deprecated" + + output = [f"This key {state_verb} {state}."] + + if (remove_in_version := deprecation.get("remove_in_version")) is not None: + output.append(f"Support {removed_verb} removed in AVD version {remove_in_version}.") + elif (remove_after_date := deprecation.get("remove_after_date")) is not None: + output.append(f"Support {removed_verb} removed in the first major AVD version released after {remove_after_date}.") + elif removed: + output.append(f"Support {removed_verb} removed in AVD.") + + if (new_key := deprecation.get("new_key")) is not None: + output.append(f"Use {new_key} instead.") + + if (url := deprecation.get("url")) is not None: + output.append(f"See [here]({url}) for details.") + + return state, " ".join(output) + + class AvdToJsonSchemaConverter: """ This class will convert the proprietary AVD Schema to JSON Schema @@ -25,14 +67,10 @@ class AvdToJsonSchemaConverter: - Most options under str "format" """ - def __init__(self, avdschema: AvdSchema): - self.avdschema = avdschema + def __init__(self): self.converters = { "display_name": self.convert_display_name, "description": self.convert_description, - # Keeping ref and def out until vscode yaml plugin works well with refs and unevaluatedProperties - # "$ref": self.convert_ref, - # "$defs": self.convert_defs, "type": self.convert_type, "max": self.convert_max, "min": self.convert_min, @@ -47,15 +85,8 @@ def __init__(self, avdschema: AvdSchema): # "dynamic_keys": self.convert_dynamic_keys, } - def convert_schema(self, schema: dict = None) -> dict: + def convert_schema(self, schema: dict) -> dict: output = {} - if schema is None: - # We are at the root level, so fetch the full schema - # Since vscode language server is not working well with "unevaluatedProperties", - # we have to stick with "additionalProperties" which does not work in combination with $ref. - # This means we have to fully expand the schema and not use $ref in jsonschema. - schema = self.avdschema.resolved_schema - for word in schema: if word not in self.converters: # Ignore unsupported keys @@ -180,12 +211,3 @@ def convert_description(self, description: str, parent_schema: dict) -> dict: } return {"description": description} - - def convert_ref(self, ref: str, parent_schema: dict) -> dict: - jsonschema_ref = ref.replace("keys", "properties") - # TODO: Translate using paths set in avd schema store - jsonschema_ref = jsonschema_ref.replace("eos_cli_config_gen#", "../../eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json#") - return {"$ref": jsonschema_ref} - - def convert_defs(self, dollardef: dict, parent_schema: dict) -> dict: - return self.__convert_keys(dollardef, parent_schema, "$defs", ignore_required=True) diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdvalidator.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdvalidator.py index 63127ce6620..9dbc120c69d 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdvalidator.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdvalidator.py @@ -2,10 +2,8 @@ # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. from collections import ChainMap -from copy import deepcopy from ansible_collections.arista.avd.plugins.plugin_utils.errors import AristaAvdError -from ansible_collections.arista.avd.plugins.plugin_utils.merge import merge from ansible_collections.arista.avd.plugins.plugin_utils.schema.refresolver import create_refresolver from ansible_collections.arista.avd.plugins.plugin_utils.utils import get_all @@ -20,13 +18,6 @@ else: JSONSCHEMA_IMPORT_ERROR = None -try: - from deepmerge import always_merger -except ImportError as imp_exc: - DEEPMERGE_IMPORT_ERROR = imp_exc -else: - DEEPMERGE_IMPORT_ERROR = None - def _primary_key_validator(validator, primary_key: str, instance: list, schema: dict): if not validator.is_type(primary_key, "str"): @@ -38,11 +29,6 @@ def _primary_key_validator(validator, primary_key: str, instance: list, schema: if not all(validator.is_type(element, "dict") for element in instance): return - # Don't run validator if $ref is part of the schema. - # Instead $ref validator will pop $ref and run all validators. - if "$ref" in schema: - return - if not all(element.get(primary_key) is not None for element in instance): yield jsonschema.ValidationError(f"Primary key '{primary_key}' is not set on all items as required.") @@ -63,11 +49,6 @@ def _keys_validator(validator, keys: dict, instance: dict, schema: dict): if not validator.is_type(instance, "object"): return - # Don't run validator if $ref is part of the schema. - # Instead $ref validator will pop $ref and run all validators. - if "$ref" in schema: - return - # Compile schema_dynamic_keys and add to "dynamic_keys" schema_dynamic_keys = schema.get("dynamic_keys", {}) dynamic_keys = {} @@ -76,30 +57,18 @@ def _keys_validator(validator, keys: dict, instance: dict, schema: dict): for resolved_key in resolved_keys: dynamic_keys.setdefault(resolved_key, childschema) - # Resolve $ref for child keys, to support schema actions below which operates on the child schema - # Add the final merged child_schema to a new dict "resolved_keys" to avoid touching the original - resolved_keys = {} all_keys = ChainMap(keys, dynamic_keys) - for key, childschema in all_keys.items(): - if key in instance and "$ref" in childschema: - scope, resolved = validator.resolver.resolve(childschema["$ref"]) - merged_childschema = deepcopy(resolved) - always_merger.merge(merged_childschema, childschema) - merged_childschema.pop("$ref", None) - resolved_keys[key] = merged_childschema - else: - resolved_keys[key] = all_keys[key] # Validation of "allow_other_keys" if not schema.get("allow_other_keys", False): # Check that instance only contains the schema keys - invalid_keys = ", ".join([key for key in instance if key not in resolved_keys and key[0] != "_"]) + invalid_keys = ", ".join([key for key in instance if key not in all_keys and key[0] != "_"]) if invalid_keys: yield jsonschema.ValidationError(f"Unexpected key(s) '{invalid_keys}' found in dict.") # Run over child keys and check for required and update child schema with dynamic valid values before # descending into validation of child schema. - for key, childschema in resolved_keys.items(): + for key, childschema in all_keys.items(): if instance.get(key) is None: # Validation of "required" on child keys if childschema.get("required"): @@ -130,31 +99,7 @@ def _dynamic_keys_validator(validator, dynamic_keys: dict, instance: dict, schem def _ref_validator(validator, ref, instance: dict, schema: dict): - """ - This function resolves the $ref referenced schema, - then merges with any schema defined at the same level - Then performs validation on the resolved+merged schema. - - Since this will run all validation tasks on the same level, - a check for $ref has been added to the other validators, to - avoid duplicate validation (and duplicate errors) - """ - scope, ref_schema = validator.resolver.resolve(ref) - validator.resolver.push_scope(scope) - schema = deepcopy(schema) - schema.pop("$ref", None) - merged_schema = merge(schema, ref_schema, same_key_strategy="use_existing", destructive_merge=False) - - # Resolve new refs inherited from the first ref. - if "$ref" in merged_schema: - yield from _ref_validator(validator, merged_schema["$ref"], instance, merged_schema) - validator.resolver.pop_scope() - return - - try: - yield from validator.descend(instance, merged_schema) - finally: - validator.resolver.pop_scope() + raise NotImplementedError("$ref must be resolved before using AvdValidator") def _valid_values_validator(validator, valid_values, instance, schema: dict): @@ -180,8 +125,6 @@ def __new__(cls, schema, store): """ if JSONSCHEMA_IMPORT_ERROR: raise AristaAvdError('Python library "jsonschema" must be installed to use this plugin') from JSONSCHEMA_IMPORT_ERROR - if DEEPMERGE_IMPORT_ERROR: - raise AristaAvdError('Python library "deepmerge" must be installed to use this plugin') from DEEPMERGE_IMPORT_ERROR ValidatorClass = jsonschema.validators.create( meta_schema=store["avd_meta_schema"], diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/default_schemas.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/default_schemas.py index 5d8acff1069..4c565f99214 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/default_schemas.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/default_schemas.py @@ -9,3 +9,8 @@ "eos_cli_config_gen": collection_dir.joinpath("roles", "eos_cli_config_gen", "schemas", "eos_cli_config_gen.schema.yml"), "eos_designs": collection_dir.joinpath("roles", "eos_designs", "schemas", "eos_designs.schema.yml"), } +DEFAULT_PICKLED_SCHEMAS = { + "avd_meta_schema": collection_dir.joinpath("plugins", "plugin_utils", "schema", "avd_meta_schema.pickle"), + "eos_cli_config_gen": collection_dir.joinpath("roles", "eos_cli_config_gen", "schemas", "eos_cli_config_gen.schema.pickle"), + "eos_designs": collection_dir.joinpath("roles", "eos_designs", "schemas", "eos_designs.schema.pickle"), +} diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/store.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/store.py index 04384746f38..b0d9b4cf8b7 100644 --- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/store.py +++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/store.py @@ -2,18 +2,28 @@ # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. from functools import lru_cache +from pickle import load from yaml import safe_load -from ansible_collections.arista.avd.plugins.plugin_utils.schema.default_schemas import DEFAULT_SCHEMAS +from ansible_collections.arista.avd.plugins.plugin_utils.schema.default_schemas import DEFAULT_PICKLED_SCHEMAS, DEFAULT_SCHEMAS @lru_cache -def create_store(): +def create_store(load_from_yaml=False): store = {} - for id, schema_file in DEFAULT_SCHEMAS.items(): - with open(schema_file, "r", encoding="UTF-8") as file: - schema_file_data = safe_load(file.read()) - store[id] = schema_file_data + + # Load from YAML if set. This is used by the tool that creates the pickle. + if load_from_yaml: + for id, schema_file in DEFAULT_SCHEMAS.items(): + with open(schema_file, "r", encoding="UTF-8") as file: + schema_file_data = safe_load(file.read()) + store[id] = schema_file_data + + # Load from Pickle + else: + for id, schema_file in DEFAULT_PICKLED_SCHEMAS.items(): + with open(schema_file, "rb") as file: + store[id] = load(file) return store diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-accounting.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-accounting.md index 9d28f37a21a..835a15f8951 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-accounting.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-accounting.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authentication.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authentication.md index 340c4056085..bb1eaf70621 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authentication.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authentication.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authorization.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authorization.md index c34fc6a95e6..3d3aeac7037 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authorization.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-authorization.md @@ -1,5 +1,5 @@ @@ -21,7 +21,7 @@ | [    all_default](## "aaa_authorization.commands.all_default") | String | | | | Command authorization method(s) as a string.
Examples:
- "group tacacs+ local"
- "group MYGROUP none"
- "group tacacs+ group MYGROUP local
| | [    privilege](## "aaa_authorization.commands.privilege") | List, items: Dictionary | | | | | | [      - level](## "aaa_authorization.commands.privilege.[].level") | String | | | | Privilege level(s) 0-15 | - | [        default](## "aaa_authorization.commands.privilege.[].default") | String | | | | Command authorization method(s) as a string.
Examples:
- "group tacacs+ local"
- "group MYGROUP none"
- "group tacacs+ group MYGROUP local" | + | [        default](## "aaa_authorization.commands.privilege.[].default") | String | | | | Command authorization method(s) as a string.
Examples:
- "group tacacs+ local"
- "group MYGROUP none"
- "group tacacs+ group MYGROUP local"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-root.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-root.md index 3d8e2eb4322..2ce20850810 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-root.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-root.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-server-groups.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-server-groups.md index c4eed17cbbd..04accfbbdcc 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-server-groups.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aaa-server-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/access-lists.md index 08f284f6438..de8ff2abe7f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/access-lists.md @@ -1,5 +1,5 @@ @@ -12,7 +12,7 @@ | [    counters_per_entry](## "access_lists.[].counters_per_entry") | Boolean | | | | | | [    sequence_numbers](## "access_lists.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "access_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ip any any" | + | [        action](## "access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ip any any"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/address-locking.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/address-locking.md index e90781f4850..82f4e482d8a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/address-locking.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/address-locking.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/agents.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/agents.md index 20d5dbea689..826498a0713 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/agents.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/agents.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aliases.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aliases.md index 443f2333c58..36ec54199cf 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aliases.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/aliases.md @@ -1,5 +1,5 @@ @@ -7,7 +7,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [aliases](## "aliases") | String | | | | Multi-line string with one or more alias commands.

Example:

```yaml
aliases: |
alias wr copy running-config startup-config
alias siib show ip interface brief
``` | + | [aliases](## "aliases") | String | | | | Multi-line string with one or more alias commands.

Example:

```yaml
aliases: |
alias wr copy running-config startup-config
alias siib show ip interface brief
```
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/application-traffic-recognition.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/application-traffic-recognition.md index 4600262d546..43b18f89990 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/application-traffic-recognition.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/application-traffic-recognition.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/arp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/arp.md index 05d93bf31df..636a8eb8f9a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/arp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/arp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/as-path.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/as-path.md index de18e345377..61ee3b08c14 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/as-path.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/as-path.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/banners.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/banners.md index 3bb947fdd31..a08c17273f6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/banners.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/banners.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/bgp-groups.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/bgp-groups.md index c0e94505b69..d86ba5acafd 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/bgp-groups.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/bgp-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/boot.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/boot.md index 53821ec7201..d5fabb08369 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/boot.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/boot.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/class-maps.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/class-maps.md index 4179a6d9d10..4dded1baa43 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/class-maps.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/class-maps.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/clock.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/clock.md index 5eb488a9ecf..9f8ee21ccc9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/clock.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/clock.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/community-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/community-lists.md index 14a53865749..d65173453a3 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/community-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/community-lists.md @@ -1,5 +1,5 @@ @@ -9,7 +9,7 @@ | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [community_lists](## "community_lists") | List, items: Dictionary | | | | | | [  - name](## "community_lists.[].name") | String | Required, Unique | | | Community-list Name | - | [    action](## "community_lists.[].action") | String | Required | | | Action as string
Example: "permit GSHUT 65123:123" | + | [    action](## "community_lists.[].action") | String | Required | | | Action as string
Example: "permit GSHUT 65123:123"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/custom-templates.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/custom-templates.md index 19047fe4dc7..40e007d116c 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/custom-templates.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/custom-templates.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/cvx.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/cvx.md index 8df3383d7c2..6e65a3d3a7b 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/cvx.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/cvx.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemon-terminattr.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemon-terminattr.md index 2f08351552e..2f0b7204302 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemon-terminattr.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemon-terminattr.md @@ -1,5 +1,5 @@ @@ -51,7 +51,7 @@ | [  sflow](## "daemon_terminattr.sflow") | Boolean | | | | Enable sFlow provider (TerminAttr default is true).
| | [  sflowaddr](## "daemon_terminattr.sflowaddr") | String | | | | ECO sFlow Collector address to listen on to receive sFlow packets (TerminAttr default "127.0.0.1:6343").
| | [  cvconfig](## "daemon_terminattr.cvconfig") | Boolean | | | | Subscribe to dynamic device configuration from CloudVision (TerminAttr default is false).
| - | [  cvcompression](## "daemon_terminattr.cvcompression") deprecated | String | | | | The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.
There is no need to change the compression scheme.This key is deprecated. Support will be removed in AVD version v5.0.0. | + | [  cvcompression](## "daemon_terminattr.cvcompression") deprecated | String | | | | The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.
There is no need to change the compression scheme.
This key is deprecated. Support will be removed in AVD version v5.0.0. | === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemons.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemons.md index d333c241efe..e7ae3e2b04d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemons.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/daemons.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-relay.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-relay.md index de8bcaf4404..2ab52991e59 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-relay.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-relay.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-servers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-servers.md index 4a356f47c4f..44407122a37 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-servers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dhcp-servers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dns-domain.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dns-domain.md index d447fd22ae8..8ce5df29fac 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dns-domain.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dns-domain.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/domain-list.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/domain-list.md index 620b9f6d409..216a392a3ba 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/domain-list.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/domain-list.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dot1x.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dot1x.md index a9467e2b1c5..754d75850ae 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dot1x.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dot1x.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dps-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dps-interfaces.md index 1e00e4d78b5..fb74fc66db7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dps-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dps-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dynamic-prefix-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dynamic-prefix-lists.md index a9fc9f6f16e..b127eff3cda 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dynamic-prefix-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/dynamic-prefix-lists.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/enable-password.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/enable-password.md index 705b20e0b7c..3aae2fe056c 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/enable-password.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/enable-password.md @@ -1,5 +1,5 @@ @@ -9,7 +9,7 @@ | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [enable_password](## "enable_password") | Dictionary | | | | | | [  hash_algorithm](## "enable_password.hash_algorithm") | String | | | Valid Values:
- md5
- sha512 | | - | [  key](## "enable_password.key") | String | | | | Must be the hash of the password using the specified algorithm.
By default EOS salts the password, so the simplest is to generate the hash on an EOS device. | + | [  key](## "enable_password.key") | String | | | | Must be the hash of the password using the specified algorithm.
By default EOS salts the password, so the simplest is to generate the hash on an EOS device.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-configuration.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-configuration.md index e6614bb4aea..95ef50b3941 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-documentation.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-documentation.md index a82813975c6..3b469b43c19 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-documentation.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli-config-gen-documentation.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli.md index db411ba26e6..76f8975bbca 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/eos-cli.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/errdisable.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/errdisable.md index fe7368d0fb5..6bc79584645 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/errdisable.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/errdisable.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md index 424ece13e02..ecae56eb9e0 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ethernet-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-handlers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-handlers.md index efa4b545f9b..ba782d4fd59 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-handlers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-handlers.md @@ -1,5 +1,5 @@ @@ -14,7 +14,7 @@ | [    delay](## "event_handlers.[].delay") | Integer | | | | Event-handler delay in seconds
| | [    trigger](## "event_handlers.[].trigger") | String | | | Valid Values:
- on-boot
- on-logging
- on-startup-config | Configure event trigger condition.
| | [    regex](## "event_handlers.[].regex") | String | | | | Regular expression to use for searching log messages. Required for on-logging trigger
| - | [    asynchronous](## "event_handlers.[].asynchronous") | Boolean | | `False` | | Set the action to be non-blocking. | + | [    asynchronous](## "event_handlers.[].asynchronous") | Boolean | | `False` | | Set the action to be non-blocking.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-monitor.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-monitor.md index 3a41e2dee6f..c439c25033d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-monitor.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/event-monitor.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/flow-tracking.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/flow-tracking.md index b880f3b71e7..cbe1ca9756d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/flow-tracking.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/flow-tracking.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-default-config.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-default-config.md index c8b218ed06e..75ad115fc27 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-default-config.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-default-config.md @@ -1,5 +1,5 @@ @@ -7,7 +7,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [generate_default_config](## "generate_default_config") | Boolean | | `True` | | The `generate_default_config` knob allows to omit default EOS configuration.
This can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.

The following commands will be omitted when `generate_default_config` is set to `false`:

- RANCID Content Type
- Hostname
- Default configuration for `aaa`
- Default configuration for `enable password`
- Transceiver qsfp default mode
- End of configuration delimiter | + | [generate_default_config](## "generate_default_config") | Boolean | | `True` | | The `generate_default_config` knob allows to omit default EOS configuration.
This can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.

The following commands will be omitted when `generate_default_config` is set to `false`:

- RANCID Content Type
- Hostname
- Default configuration for `aaa`
- Default configuration for `enable password`
- Transceiver qsfp default mode
- End of configuration delimiter
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-device-documentation.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-device-documentation.md index 6a3e93e65cd..a17ea1993f7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-device-documentation.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/generate-device-documentation.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware-counters.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware-counters.md index ff1e1873b78..af46ec52985 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware-counters.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware-counters.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware.md index fb75fc17995..a66f2dd4c27 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hardware.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hostname.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hostname.md index 591dfd139e4..54ca1878205 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hostname.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/hostname.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-defaults.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-defaults.md index 7e448e82243..94fb44a78b6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-defaults.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-defaults.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-groups.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-groups.md index 37f0e28538f..1e360dc1bf6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-groups.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-profiles.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-profiles.md index f596a0570a5..40d5913a05f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-profiles.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/interface-profiles.md @@ -1,5 +1,5 @@ @@ -10,7 +10,7 @@ | [interface_profiles](## "interface_profiles") | List, items: Dictionary | | | | | | [  - name](## "interface_profiles.[].name") | String | Required, Unique | | | Interface-Profile Name | | [    commands](## "interface_profiles.[].commands") | List, items: String | Required | | | | - | [      - <str>](## "interface_profiles.[].commands.[]") | String | | | | EOS CLI interface command
Example: "switchport mode access" | + | [      - <str>](## "interface_profiles.[].commands.[]") | String | | | | EOS CLI interface command
Example: "switchport mode access"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists-max-entries.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists-max-entries.md index 2bfd57c71d4..e01c19d5403 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists-max-entries.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists-max-entries.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists.md index a9544d647a6..7ada530cfa2 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-access-lists.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-community-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-community-lists.md index 44a61a42d24..917c7f81ab2 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-community-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-community-lists.md @@ -1,5 +1,5 @@ @@ -13,7 +13,7 @@ | [      - action](## "ip_community_lists.[].entries.[].action") | String | Required | | Valid Values:
- permit
- deny | | | [        communities](## "ip_community_lists.[].entries.[].communities") | List, items: String | | | | If defined, a standard community-list will be configured.
Supported community strings (case insensitive):
- GSHUT
- internet
- local-as
- no-advertise
- no-export
- <1-4294967040>
- aa:nn
| | [          - <str>](## "ip_community_lists.[].entries.[].communities.[]") | String | | | | | - | [        regexp](## "ip_community_lists.[].entries.[].regexp") | String | | | | Regular Expression
If defined, a regex community-list will be configured | + | [        regexp](## "ip_community_lists.[].entries.[].regexp") | String | | | | Regular Expression
If defined, a regex community-list will be configured
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-relay.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-relay.md index 6f7c3ff0702..2a1c5b281b9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-relay.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-relay.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-snooping.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-snooping.md index abeaa4411a2..17647d38df6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-snooping.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-dhcp-snooping.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-domain-lookup.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-domain-lookup.md index f71c8e82377..1e984eebb79 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-domain-lookup.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-domain-lookup.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists-regexp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists-regexp.md index e20de6d82c7..dfb0219cd84 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists-regexp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists-regexp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists.md index dc731334284..e77521d1d42 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-extcommunity-lists.md @@ -1,5 +1,5 @@ @@ -11,7 +11,7 @@ | [  - name](## "ip_extcommunity_lists.[].name") | String | Required, Unique | | | Community-list Name | | [    entries](## "ip_extcommunity_lists.[].entries") | List, items: Dictionary | Required | | | | | [      - type](## "ip_extcommunity_lists.[].entries.[].type") | String | Required | | Valid Values:
- permit
- deny | | - | [        extcommunities](## "ip_extcommunity_lists.[].entries.[].extcommunities") | String | Required | | | Communities as string
Example: "65000:65000" | + | [        extcommunities](## "ip_extcommunity_lists.[].entries.[].extcommunities") | String | Required | | | Communities as string
Example: "65000:65000"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-hardware.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-hardware.md index cc1801195c0..6ec7aa82f70 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-hardware.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-hardware.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-http-client-source-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-http-client-source-interfaces.md index b34191de948..84e00257393 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-http-client-source-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-http-client-source-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-icmp-redirect.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-icmp-redirect.md index a24dd73562d..aebca20b270 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-icmp-redirect.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-icmp-redirect.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-igmp-snooping.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-igmp-snooping.md index 0454d73022f..77d67182892 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-igmp-snooping.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-igmp-snooping.md @@ -1,5 +1,5 @@ @@ -39,7 +39,7 @@ | [        version](## "ip_igmp_snooping.vlans.[].querier.version") | Integer | | | | | | [      max_groups](## "ip_igmp_snooping.vlans.[].max_groups") | Integer | | | | | | [      fast_leave](## "ip_igmp_snooping.vlans.[].fast_leave") | Boolean | | | | | - | [      proxy](## "ip_igmp_snooping.vlans.[].proxy") | Boolean | | | | Global proxy settings should be enabled before enabling per-vlan | + | [      proxy](## "ip_igmp_snooping.vlans.[].proxy") | Boolean | | | | Global proxy settings should be enabled before enabling per-vlan
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-name-servers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-name-servers.md index 7dfd811eea0..4b342df2dab 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-name-servers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-name-servers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-nat.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-nat.md index 1de050af0fd..b35e90f5417 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-nat.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-nat.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-radius-source-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-radius-source-interfaces.md index a3daa8568f2..543d246539b 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-radius-source-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-radius-source-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing-ipv6-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing-ipv6-interfaces.md index a8d9d1699fa..44f432755d3 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing-ipv6-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing-ipv6-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing.md index 499408c1150..624357d3679 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-routing.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-security.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-security.md index e36bf62253f..1db1cc84a9e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-security.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-security.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-ssh-client-source-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-ssh-client-source-interfaces.md index 1737f55ce99..3520b310eac 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-ssh-client-source-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-ssh-client-source-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-tacacs-source-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-tacacs-source-interfaces.md index aa1af34bccb..4f59824d300 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-tacacs-source-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-tacacs-source-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-virtual-router-mac-address.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-virtual-router-mac-address.md index ccb764d6f47..37da800ac90 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-virtual-router-mac-address.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ip-virtual-router-mac-address.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-access-lists.md index 057c37e1780..0730b218c90 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-access-lists.md @@ -1,5 +1,5 @@ @@ -12,7 +12,7 @@ | [    counters_per_entry](## "ipv6_access_lists.[].counters_per_entry") | Boolean | | | | | | [    sequence_numbers](## "ipv6_access_lists.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "ipv6_access_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "ipv6_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ipv6 any any" | + | [        action](## "ipv6_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ipv6 any any"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-hardware.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-hardware.md index bc27c3fd3ce..eb748f7674e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-hardware.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-hardware.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-icmp-redirect.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-icmp-redirect.md index 0a7488b9d97..b25c9697b9a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-icmp-redirect.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-icmp-redirect.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-prefix-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-prefix-lists.md index f7c76a25356..83259b25989 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-prefix-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-prefix-lists.md @@ -1,5 +1,5 @@ @@ -11,7 +11,7 @@ | [  - name](## "ipv6_prefix_lists.[].name") | String | Required, Unique | | | Prefix-list Name | | [    sequence_numbers](## "ipv6_prefix_lists.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "ipv6_prefix_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "ipv6_prefix_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "permit 1b11:3a00:22b0:0082::/64 eq 128" | + | [        action](## "ipv6_prefix_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "permit 1b11:3a00:22b0:0082::/64 eq 128"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-standard-access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-standard-access-lists.md index f601fad21d0..15761fdf847 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-standard-access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-standard-access-lists.md @@ -1,5 +1,5 @@ @@ -12,7 +12,7 @@ | [    counters_per_entry](## "ipv6_standard_access_lists.[].counters_per_entry") | Boolean | | | | | | [    sequence_numbers](## "ipv6_standard_access_lists.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "ipv6_standard_access_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "ipv6_standard_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ipv6 any any" | + | [        action](## "ipv6_standard_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ipv6 any any"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-static-routes.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-static-routes.md index f409e48758a..e9b13e0c0e0 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-static-routes.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-static-routes.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-unicast-routing.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-unicast-routing.md index a01d42c39ea..4ca1e320a3d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-unicast-routing.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ipv6-unicast-routing.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/is-deployed.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/is-deployed.md index 4aa9d7ae24f..2e5e32a2f1f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/is-deployed.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/is-deployed.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/l2-protocol.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/l2-protocol.md index 52e3f5241d9..68d36996223 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/l2-protocol.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/l2-protocol.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lacp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lacp.md index 83cd269ae0e..c5b25b79107 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lacp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lacp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/link-tracking-groups.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/link-tracking-groups.md index adc4c832f41..bc08dcb8cbc 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/link-tracking-groups.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/link-tracking-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lldp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lldp.md index 116efce6570..453e259c3eb 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lldp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/lldp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/load-interval.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/load-interval.md index 3b308295877..6ac33313436 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/load-interval.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/load-interval.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/local-users.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/local-users.md index 4f58a16ec30..b953bd6149e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/local-users.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/local-users.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/logging.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/logging.md index 151ee1b9327..c3563dd9d50 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/logging.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/logging.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/loopback-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/loopback-interfaces.md index ac218d6e121..077bcab18ff 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/loopback-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/loopback-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-access-lists.md index 6e8b53d0503..2aae889a242 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-access-lists.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-address-table.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-address-table.md index c15f4d32fe1..0a29d462aec 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-address-table.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-address-table.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-security.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-security.md index 2e0a46a4a74..851983cb566 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-security.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mac-security.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/maintenance.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/maintenance.md index 09ac87daf47..740b27da4bc 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/maintenance.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/maintenance.md @@ -1,5 +1,5 @@ @@ -34,7 +34,7 @@ | [        bgp_groups](## "maintenance.units.[].groups.bgp_groups") | List, items: String | | | | | | [          - <str>](## "maintenance.units.[].groups.bgp_groups.[]") | String | | | | Name of BGP Group
| | [        interface_groups](## "maintenance.units.[].groups.interface_groups") | List, items: String | | | | | - | [          - <str>](## "maintenance.units.[].groups.interface_groups.[]") | String | | | | Name of Interface Group | + | [          - <str>](## "maintenance.units.[].groups.interface_groups.[]") | String | | | | Name of Interface Group
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-accounts.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-accounts.md index b950c7fd1b1..6a818711acf 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-accounts.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-accounts.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-gnmi.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-gnmi.md index d8dad219902..e1e7514b22e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-gnmi.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-gnmi.md @@ -1,5 +1,5 @@ @@ -36,7 +36,7 @@ | [  enable_vrfs](## "management_api_gnmi.enable_vrfs") deprecated | List, items: Dictionary | | | | These should not be mixed with the new keys above.
This key is deprecated. Support will be removed in AVD version 5.0.0. Use transport.grpc instead. | | [    - name](## "management_api_gnmi.enable_vrfs.[].name") | String | Required, Unique | | | VRF name | | [      access_group](## "management_api_gnmi.enable_vrfs.[].access_group") | String | | | | Standard IPv4 ACL name | - | [  octa](## "management_api_gnmi.octa") deprecated | Dictionary | | | | These should not be mixed with the new keys above.
Octa activates `eos-native` provider and it is the only provider currently supported by EOS.This key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead. | + | [  octa](## "management_api_gnmi.octa") deprecated | Dictionary | | | | These should not be mixed with the new keys above.
Octa activates `eos-native` provider and it is the only provider currently supported by EOS.
This key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead. | === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-http.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-http.md index e8a737d259d..a3815a6530f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-http.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-http.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-models.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-models.md index 65f92c33a50..ce14cbcb579 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-models.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-api-models.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-console.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-console.md index 25d251ccc7c..415a8762b6d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-console.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-console.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-cvx.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-cvx.md index f45f1189c3b..890328c6527 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-cvx.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-cvx.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-defaults.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-defaults.md index 36298fcba77..724ce5b6a35 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-defaults.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-defaults.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-interfaces.md index 2b5a886e046..df8cf2c2686 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-security.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-security.md index 1d63ce5de51..69cb90898a1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-security.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-security.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-ssh.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-ssh.md index 533a848aeaa..69dbb8e5027 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-ssh.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-ssh.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-tech-support.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-tech-support.md index 68bff872645..08e3769d149 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-tech-support.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/management-tech-support.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/match-list-input.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/match-list-input.md index 5e474d2bc7a..4598ccafd77 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/match-list-input.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/match-list-input.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mcs-client.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mcs-client.md index 51bfcbd5649..6b3483f14b4 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mcs-client.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mcs-client.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/metadata.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/metadata.md index b9130ead69a..08c0df9caba 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/metadata.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/metadata.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mlag-configuration.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mlag-configuration.md index f96943d1679..0a69f5d07c9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mlag-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mlag-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-connectivity.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-connectivity.md index 5b92d59b741..792088a0664 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-connectivity.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-connectivity.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-sessions.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-sessions.md index 93163f324c7..e3801496fdb 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-sessions.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/monitor-sessions.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mpls.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mpls.md index 8c0306861df..29fc796c6a5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mpls.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/mpls.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/name-server.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/name-server.md index 45b7ff5e8ce..6419d3120ac 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/name-server.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/name-server.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ntp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ntp.md index 6ead0ebcf1a..b2a354ce242 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ntp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ntp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/patch-panel.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/patch-panel.md index b0bf0ebe894..2dc7060e134 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/patch-panel.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/patch-panel.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/peer-filters.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/peer-filters.md index b223b6a1558..15689593c83 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/peer-filters.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/peer-filters.md @@ -1,5 +1,5 @@ @@ -11,7 +11,7 @@ | [  - name](## "peer_filters.[].name") | String | Required, Unique | | | Peer-filter Name | | [    sequence_numbers](## "peer_filters.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "peer_filters.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        match](## "peer_filters.[].sequence_numbers.[].match") | String | Required | | | Match as string
Example: "as-range 1-100 result accept" | + | [        match](## "peer_filters.[].sequence_numbers.[].match") | String | Required | | | Match as string
Example: "as-range 1-100 result accept"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/platform.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/platform.md index 4da0537c03f..e1553632143 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/platform.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/platform.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/poe.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/poe.md index 55824429570..e5c90705e1e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/poe.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/poe.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/policy-maps.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/policy-maps.md index cb8c94de677..48d41fa6487 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/policy-maps.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/policy-maps.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md index 7be6cc36126..97b2b80192d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/port-channel-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prefix-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prefix-lists.md index fb81ed19933..36564186605 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prefix-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prefix-lists.md @@ -1,5 +1,5 @@ @@ -11,7 +11,7 @@ | [  - name](## "prefix_lists.[].name") | String | Required, Unique | | | Prefix-list Name | | [    sequence_numbers](## "prefix_lists.[].sequence_numbers") | List, items: Dictionary | | | | | | [      - sequence](## "prefix_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "prefix_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "permit 10.255.0.0/27 eq 32" | + | [        action](## "prefix_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "permit 10.255.0.0/27 eq 32"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/priority-flow-control.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/priority-flow-control.md index d2ae4ea4cf5..3ee3e699bbd 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/priority-flow-control.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/priority-flow-control.md @@ -1,5 +1,5 @@ @@ -14,7 +14,7 @@ | [    timeout](## "priority_flow_control.watchdog.timeout") | String | | | Pattern: ^\d+(\.\d{1,2})?$ | Timeout in seconds after which port should be errdisabled or
should start dropping on congested priorities.
This should be decimal with up to 2 decimal point.
Example: 0.01 or 60
| | [    polling_interval](## "priority_flow_control.watchdog.polling_interval") | String | | | Pattern: ^\d+(\.\d{1,3})?$ | Time interval in seconds at which the watchdog should poll the queues.
This should be decimal with up to 3 decimal point.
Example: 0.005 or 60
| | [    recovery_time](## "priority_flow_control.watchdog.recovery_time") | String | | | Pattern: ^\d+(\.\d{1,2})?$ | Recovery-time in seconds after which stuck queue should
recover and start forwarding again.
This should be decimal with up to 2 decimal point.
Example: 0.01 or 60
| - | [    override_action_drop](## "priority_flow_control.watchdog.override_action_drop") | Boolean | | | | Override configured action on stuck queue to drop. | + | [    override_action_drop](## "priority_flow_control.watchdog.override_action_drop") | Boolean | | | | Override configured action on stuck queue to drop.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prompt.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prompt.md index f91d2bfbfed..dc46be3d44b 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prompt.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/prompt.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ptp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ptp.md index 55f94f7d210..b315a94734a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ptp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/ptp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos-profiles.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos-profiles.md index bbb74e9510e..efe2e264ab8 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos-profiles.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos-profiles.md @@ -1,5 +1,5 @@ @@ -87,7 +87,7 @@ | [          forced](## "qos_profiles.[].priority_flow_control.watchdog.timer.forced") | Boolean | | | | Force recover any stuck queue(s) after the duration,
irrespective of whether PFC frames are being
received or not.
| | [      priorities](## "qos_profiles.[].priority_flow_control.priorities") | List, items: Dictionary | | | | Set the drop/no_drop on each queue
| | [        - priority](## "qos_profiles.[].priority_flow_control.priorities.[].priority") | Integer | Required, Unique | | Min: 0
Max: 7 | Priority queue number (COS value)
| - | [          no_drop](## "qos_profiles.[].priority_flow_control.priorities.[].no_drop") | Boolean | Required | | | Enable Priority Flow Control frames on this queue | + | [          no_drop](## "qos_profiles.[].priority_flow_control.priorities.[].no_drop") | Boolean | Required | | | Enable Priority Flow Control frames on this queue
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos.md index 8e45009cd5c..542cb22e846 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/qos.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-length.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-length.md index b22090824e2..35b81dde0e5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-length.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-length.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-streaming.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-streaming.md index c4bd3962f5a..bc92e415ee1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-streaming.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/queue-monitor-streaming.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-server.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-server.md index e36b7d6d3bd..aae430d7fb7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-server.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-server.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-servers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-servers.md index 8e1b1dacab0..0c816a77b72 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-servers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/radius-servers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/redundancy.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/redundancy.md index c7198cb3c5b..24cb6e514d0 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/redundancy.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/redundancy.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/role-input-validation.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/role-input-validation.md index 8dbba294403..be15e16d7a9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/role-input-validation.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/role-input-validation.md @@ -1,5 +1,5 @@ @@ -7,8 +7,8 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [avd_data_conversion_mode](## "avd_data_conversion_mode") | String | | `debug` | Valid Values:
- disabled
- error
- warning
- info
- debug
- quiet | Conversion Mode for AVD input data conversion.
Input data conversion will perform type conversion of input variables as defined in the schema.
The type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.
During conversion, messages will generated with information about the host(s) and key(s) which required conversion.
"disabled" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
"quiet" will not produce any messages | - | [avd_data_validation_mode](## "avd_data_validation_mode") | String | | `warning` | Valid Values:
- disabled
- error
- warning
- info
- debug | Validation Mode for AVD input data validation.
Input data validation will validate the input variables according to the schema.
During validation, messages will generated with information about the host(s) and key(s) which failed validation.
"disabled" means that validation will not run.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v. | + | [avd_data_conversion_mode](## "avd_data_conversion_mode") | String | | `debug` | Valid Values:
- disabled
- error
- warning
- info
- debug
- quiet | Conversion Mode for AVD input data conversion.
Input data conversion will perform type conversion of input variables as defined in the schema.
The type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.
During conversion, messages will generated with information about the host(s) and key(s) which required conversion.
"disabled" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
"quiet" will not produce any messages
| + | [avd_data_validation_mode](## "avd_data_validation_mode") | String | | `warning` | Valid Values:
- disabled
- error
- warning
- info
- debug | Validation Mode for AVD input data validation.
Input data validation will validate the input variables according to the schema.
During validation, messages will generated with information about the host(s) and key(s) which failed validation.
"disabled" means that validation will not run.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/roles.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/roles.md index 43ebc2e505a..6184dc23c30 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/roles.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/roles.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/route-maps.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/route-maps.md index 341a8e36bd5..c1f848a19e5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/route-maps.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/route-maps.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-adaptive-virtual-topology.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-adaptive-virtual-topology.md index 565c311d81e..58b97de088e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-adaptive-virtual-topology.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-adaptive-virtual-topology.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bfd.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bfd.md index b187a6d79ea..ad977f31e94 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bfd.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bfd.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index e2aa34d64b7..16debe52fe5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-general.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-general.md index e9c0ccae639..e44d0aa1924 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-general.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-general.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-igmp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-igmp.md index 5baf6499368..dda125eaf50 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-igmp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-igmp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md index ea4c735bd8d..6381f10a498 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-isis.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-l2-vpn.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-l2-vpn.md index 3799e057838..ad6c6dd9dff 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-l2-vpn.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-l2-vpn.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-msdp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-msdp.md index d9b7d306852..5fccb713dd5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-msdp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-msdp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-multicast.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-multicast.md index 522de7584ef..24cce56d844 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-multicast.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-multicast.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-ospf.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-ospf.md index abbee9048dc..4856d358e10 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-ospf.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-ospf.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-path-selection.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-path-selection.md index db9f8b36ff2..b3c8c51e47a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-path-selection.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-path-selection.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-pim-sparse-mode.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-pim-sparse-mode.md index 812508bf162..b8b0e96bf0f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-pim-sparse-mode.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-pim-sparse-mode.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-service-insertion.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-service-insertion.md index 803fa107351..9f291b6b31d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-service-insertion.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-service-insertion.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-traffic-engineering.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-traffic-engineering.md index 2ee910b8136..7383cad2e52 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-traffic-engineering.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-traffic-engineering.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-configuration-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-configuration-bgp.md index bbeed0e7cbe..d20a58d33f2 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-configuration-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-configuration-bgp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-protocols-model.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-protocols-model.md index b6fa7a17975..b723d53a8d9 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-protocols-model.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-routing-protocols-model.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-unsupported-transceiver.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-unsupported-transceiver.md index 4efae2b7b21..e96df929d5b 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-unsupported-transceiver.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/service-unsupported-transceiver.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/sflow.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/sflow.md index b5522bc1286..07ae8a0e3e7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/sflow.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/sflow.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/snmp-server.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/snmp-server.md index 9731bdde0d3..9c798604a96 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/snmp-server.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/snmp-server.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/spanning-tree.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/spanning-tree.md index f88d9992f8f..e007bf13ea5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/spanning-tree.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/spanning-tree.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/standard-access-lists.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/standard-access-lists.md index ba7a415dbbc..151ae31612f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/standard-access-lists.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/standard-access-lists.md @@ -1,5 +1,5 @@ @@ -12,7 +12,7 @@ | [    counters_per_entry](## "standard_access_lists.[].counters_per_entry") | Boolean | | | | | | [    sequence_numbers](## "standard_access_lists.[].sequence_numbers") | List, items: Dictionary | Required | | | | | [      - sequence](## "standard_access_lists.[].sequence_numbers.[].sequence") | Integer | Required, Unique | | | Sequence ID | - | [        action](## "standard_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ip any any" | + | [        action](## "standard_access_lists.[].sequence_numbers.[].action") | String | Required | | | Action as string
Example: "deny ip any any"
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/static-routes.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/static-routes.md index 7f7440c5f50..8a9d6c2e6c8 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/static-routes.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/static-routes.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/stun.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/stun.md index a87a4eea96f..4a2e66fe725 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/stun.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/stun.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/switchport-default.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/switchport-default.md index cd8ab9b7da6..2c94c791ef5 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/switchport-default.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/switchport-default.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/system.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/system.md index f398d5e4512..26f19e6305f 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/system.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/system.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tacacs-servers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tacacs-servers.md index 486bfeee248..627dbffb05d 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tacacs-servers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tacacs-servers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tap-aggregation.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tap-aggregation.md index 27d333f11a9..595b8fb19ef 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tap-aggregation.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tap-aggregation.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tcam-profile.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tcam-profile.md index d4912647545..21afe67b9c1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tcam-profile.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tcam-profile.md @@ -1,5 +1,5 @@ @@ -12,7 +12,7 @@ | [  profiles](## "tcam_profile.profiles") | List, items: Dictionary | | | | | | [    - name](## "tcam_profile.profiles.[].name") | String | Required, Unique | | | Tcam-Profile Name | | [      config](## "tcam_profile.profiles.[].config") | String | | | | TCAM Profile Config. Since these can be very long, it is often a good idea to import the config from a file.
Example: "{{ lookup('file', 'TCAM_TRAFFIC_POLICY.conf') }}"
| - | [      source](## "tcam_profile.profiles.[].source") | String | | | | TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device. | + | [      source](## "tcam_profile.profiles.[].source") | String | | | | TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/terminal.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/terminal.md index 7b048bb0359..20ff5a39ec4 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/terminal.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/terminal.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/trackers.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/trackers.md index 001c10be7c8..edc43f58332 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/trackers.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/trackers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/traffic-policies.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/traffic-policies.md index 348eb9d6987..b01d01ecae1 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/traffic-policies.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/traffic-policies.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/transceiver-qsfp-default-mode-4x10.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/transceiver-qsfp-default-mode-4x10.md index b073735630a..764b9acd04e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/transceiver-qsfp-default-mode-4x10.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/transceiver-qsfp-default-mode-4x10.md @@ -1,5 +1,5 @@ @@ -7,7 +7,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [transceiver_qsfp_default_mode_4x10](## "transceiver_qsfp_default_mode_4x10") | Boolean | | `True` | | On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G. | + | [transceiver_qsfp_default_mode_4x10](## "transceiver_qsfp_default_mode_4x10") | Boolean | | `True` | | On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tunnel-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tunnel-interfaces.md index 24497f65209..6d16a3f335e 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tunnel-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/tunnel-interfaces.md @@ -1,5 +1,5 @@ @@ -27,7 +27,7 @@ | [    source_interface](## "tunnel_interfaces.[].source_interface") | String | | | | Tunnel Source Interface Name | | [    destination](## "tunnel_interfaces.[].destination") | String | | | | IPv4 or IPv6 Address Tunnel Destination | | [    path_mtu_discovery](## "tunnel_interfaces.[].path_mtu_discovery") | Boolean | | | | Enable Path MTU Discovery On Tunnel | - | [    eos_cli](## "tunnel_interfaces.[].eos_cli") | String | | | | Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration. | + | [    eos_cli](## "tunnel_interfaces.[].eos_cli") | String | | | | Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md index 78cf4b594d8..92541dceff3 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/virtual-source-nat-vrfs.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-interfaces.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-interfaces.md index c7b574cbc90..dcde95fa9d6 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-internal-order.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-internal-order.md index e7d0d61253e..cc80c1e7908 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-internal-order.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlan-internal-order.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlans.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlans.md index 634795bbcff..b92dfb870d3 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlans.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vlans.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vmtracer-sessions.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vmtracer-sessions.md index 0ced50aa767..a45fa693dcb 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vmtracer-sessions.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vmtracer-sessions.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vrfs.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vrfs.md index 9c992f023c4..5359c8bb114 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vrfs.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vrfs.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vxlan-interface.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vxlan-interface.md index 1efb5a9b4a1..fa100dd6681 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vxlan-interface.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/vxlan-interface.md @@ -1,5 +1,5 @@ @@ -41,7 +41,7 @@ | [      flood_vteps](## "vxlan_interface.Vxlan1.vxlan.flood_vteps") | List, items: String | | | | | | [        - <str>](## "vxlan_interface.Vxlan1.vxlan.flood_vteps.[]") | String | | | | Remote VTEP IP Address | | [      flood_vtep_learned_data_plane](## "vxlan_interface.Vxlan1.vxlan.flood_vtep_learned_data_plane") | Boolean | | | | | - | [    eos_cli](## "vxlan_interface.Vxlan1.eos_cli") | String | | | | Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration. | + | [    eos_cli](## "vxlan_interface.Vxlan1.eos_cli") | String | | | | Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json index 4b947f03359..c9435aa39f4 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json @@ -424,7 +424,7 @@ }, "default": { "type": "string", - "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"", + "description": "Command authorization method(s) as a string.\nExamples:\n- \"group tacacs+ local\"\n- \"group MYGROUP none\"\n- \"group tacacs+ group MYGROUP local\"\n", "title": "Default" } }, @@ -550,7 +550,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"deny ip any any\"", + "description": "Action as string\nExample: \"deny ip any any\"\n", "title": "Action" } }, @@ -706,7 +706,7 @@ }, "aliases": { "type": "string", - "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```", + "description": "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface brief\n```\n", "title": "Aliases" }, "application_traffic_recognition": { @@ -1186,7 +1186,7 @@ "quiet" ], "default": "debug", - "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages", + "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages\n", "title": "AVD Data Conversion Mode" }, "avd_data_validation_mode": { @@ -1199,7 +1199,7 @@ "debug" ], "default": "warning", - "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.", + "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", "title": "AVD Data Validation Mode" }, "banners": { @@ -1431,7 +1431,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"permit GSHUT 65123:123\"", + "description": "Action as string\nExample: \"permit GSHUT 65123:123\"\n", "title": "Action" } }, @@ -1800,7 +1800,7 @@ }, "cvcompression": { "type": "string", - "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", + "description": "The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.\nThere is no need to change the compression scheme.\n\nThis key is deprecated. Support will be removed in AVD version v5.0.0.", "deprecated": true, "title": "Cvcompression" } @@ -2294,7 +2294,7 @@ }, "key": { "type": "string", - "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.", + "description": "Must be the hash of the password using the specified algorithm.\nBy default EOS salts the password, so the simplest is to generate the hash on an EOS device.\n", "title": "Key" } }, @@ -5061,7 +5061,7 @@ "asynchronous": { "type": "boolean", "default": false, - "description": "Set the action to be non-blocking.", + "description": "Set the action to be non-blocking.\n", "title": "Asynchronous" } }, @@ -5566,7 +5566,7 @@ "generate_default_config": { "type": "boolean", "default": true, - "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter", + "description": "The `generate_default_config` knob allows to omit default EOS configuration.\nThis can be useful when leveraging `eos_cli_config_gen` to generate configlets with CloudVision.\n\nThe following commands will be omitted when `generate_default_config` is set to `false`:\n\n- RANCID Content Type\n- Hostname\n- Default configuration for `aaa`\n- Default configuration for `enable password`\n- Transceiver qsfp default mode\n- End of configuration delimiter\n", "title": "Generate Default Config" }, "generate_device_documentation": { @@ -5817,7 +5817,7 @@ "type": "array", "items": { "type": "string", - "description": "EOS CLI interface command\nExample: \"switchport mode access\"" + "description": "EOS CLI interface command\nExample: \"switchport mode access\"\n" }, "title": "Commands" } @@ -6061,7 +6061,7 @@ }, "regexp": { "type": "string", - "description": "Regular Expression\nIf defined, a regex community-list will be configured", + "description": "Regular Expression\nIf defined, a regex community-list will be configured\n", "title": "RegExp" } }, @@ -6214,7 +6214,7 @@ }, "extcommunities": { "type": "string", - "description": "Communities as string\nExample: \"65000:65000\"", + "description": "Communities as string\nExample: \"65000:65000\"\n", "title": "Extcommunities" } }, @@ -6513,7 +6513,7 @@ }, "proxy": { "type": "boolean", - "description": "Global proxy settings should be enabled before enabling per-vlan", + "description": "Global proxy settings should be enabled before enabling per-vlan\n", "title": "Proxy" } }, @@ -7504,7 +7504,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"deny ipv6 any any\"", + "description": "Action as string\nExample: \"deny ipv6 any any\"\n", "title": "Action" } }, @@ -7601,7 +7601,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"", + "description": "Action as string\nExample: \"permit 1b11:3a00:22b0:0082::/64 eq 128\"\n", "title": "Action" } }, @@ -7654,7 +7654,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"deny ipv6 any any\"", + "description": "Action as string\nExample: \"deny ipv6 any any\"\n", "title": "Action" } }, @@ -9014,7 +9014,7 @@ "type": "array", "items": { "type": "string", - "description": "Name of Interface Group" + "description": "Name of Interface Group\n" }, "title": "Interface Groups" } @@ -9277,7 +9277,7 @@ }, "octa": { "type": "object", - "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", + "description": "These should not be mixed with the new keys above.\nOcta activates `eos-native` provider and it is the only provider currently supported by EOS.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use provider instead.", "deprecated": true, "title": "Octa" } @@ -11330,7 +11330,7 @@ }, "match": { "type": "string", - "description": "Match as string\nExample: \"as-range 1-100 result accept\"", + "description": "Match as string\nExample: \"as-range 1-100 result accept\"\n", "title": "Match" } }, @@ -13391,7 +13391,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"permit 10.255.0.0/27 eq 32\"", + "description": "Action as string\nExample: \"permit 10.255.0.0/27 eq 32\"\n", "title": "Action" } }, @@ -13458,7 +13458,7 @@ }, "override_action_drop": { "type": "boolean", - "description": "Override configured action on stuck queue to drop.", + "description": "Override configured action on stuck queue to drop.\n", "title": "Override Action Drop" } }, @@ -14449,7 +14449,7 @@ }, "no_drop": { "type": "boolean", - "description": "Enable Priority Flow Control frames on this queue", + "description": "Enable Priority Flow Control frames on this queue\n", "title": "No Drop" } }, @@ -23665,7 +23665,7 @@ }, "action": { "type": "string", - "description": "Action as string\nExample: \"deny ip any any\"", + "description": "Action as string\nExample: \"deny ip any any\"\n", "title": "Action" } }, @@ -24262,7 +24262,7 @@ }, "source": { "type": "string", - "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.", + "description": "TCAM profile local source path. Used to read the TCAM profile from a local path existing on the device.\n", "title": "Source" } }, @@ -24748,7 +24748,7 @@ "transceiver_qsfp_default_mode_4x10": { "type": "boolean", "default": true, - "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.", + "description": "On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G.\n", "title": "Transceiver Qsfp Default Mode 4X10" }, "tunnel_interfaces": { @@ -24864,7 +24864,7 @@ }, "eos_cli": { "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.", + "description": "Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration.\n", "title": "EOS CLI" } }, @@ -26463,7 +26463,7 @@ }, "eos_cli": { "type": "string", - "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.", + "description": "Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration.\n", "title": "EOS CLI" } }, diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.pickle b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.pickle new file mode 100644 index 00000000000..fcb3f7745cb Binary files /dev/null and b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.pickle differ diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml index 79c9953786c..aee0bf80da4 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml @@ -1,4 +1,4 @@ -# Copyright (c) 2023-2024 Arista Networks, Inc. +# Copyright (c) 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. $id: eos_cli_config_gen @@ -280,7 +280,9 @@ keys: - "group MYGROUP none" - - "group tacacs+ group MYGROUP local"' + - "group tacacs+ group MYGROUP local" + + ' aaa_root: type: dict keys: @@ -351,7 +353,9 @@ keys: required: true description: 'Action as string - Example: "deny ip any any"' + Example: "deny ip any any" + + ' address_locking: type: dict keys: @@ -420,7 +424,7 @@ keys: type: str description: "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases: |\n alias wr copy running-config startup-config\n alias siib show ip interface - brief\n```" + brief\n```\n" application_traffic_recognition: type: dict description: Application traffic recognition configuration. @@ -779,7 +783,9 @@ keys: "debug" will produce hidden debug messages viewable with -v. - "quiet" will not produce any messages' + "quiet" will not produce any messages + + ' avd_data_validation_mode: documentation_options: table: role-input-validation @@ -806,7 +812,9 @@ keys: "info" will produce regular log messages. - "debug" will produce hidden debug messages viewable with -v.' + "debug" will produce hidden debug messages viewable with -v. + + ' banners: type: dict keys: @@ -941,7 +949,9 @@ keys: required: true description: 'Action as string - Example: "permit GSHUT 65123:123"' + Example: "permit GSHUT 65123:123" + + ' custom_templates: type: list display_name: Extensibility with Custom Templates @@ -1291,7 +1301,9 @@ keys: description: 'The default compression scheme when streaming to CloudVision is gzip since TerminAttr 1.6.1 and CVP 2019.1.0. - There is no need to change the compression scheme.' + There is no need to change the compression scheme. + + ' daemons: type: list primary_key: name @@ -1592,7 +1604,9 @@ keys: description: 'Must be the hash of the password using the specified algorithm. By default EOS salts the password, so the simplest is to generate the hash - on an EOS device.' + on an EOS device. + + ' eos_cli: type: str description: Multiline string with EOS CLI rendered directly on the root level @@ -3107,7 +3121,9 @@ keys: asynchronous: type: bool default: false - description: Set the action to be non-blocking. + description: 'Set the action to be non-blocking. + + ' event_monitor: type: dict keys: @@ -3293,7 +3309,9 @@ keys: - Transceiver qsfp default mode - - End of configuration delimiter' + - End of configuration delimiter + + ' generate_device_documentation: type: bool default: true @@ -3494,7 +3512,9 @@ keys: type: str description: 'EOS CLI interface command - Example: "switchport mode access"' + Example: "switchport mode access" + + ' ip_access_lists: type: list primary_key: name @@ -3716,7 +3736,9 @@ keys: type: str description: 'Regular Expression - If defined, a regex community-list will be configured' + If defined, a regex community-list will be configured + + ' ip_dhcp_relay: type: dict keys: @@ -3810,7 +3832,9 @@ keys: required: true description: 'Communities as string - Example: "65000:65000"' + Example: "65000:65000" + + ' ip_extcommunity_lists_regexp: type: list primary_key: name @@ -3990,8 +4014,10 @@ keys: type: bool proxy: type: bool - description: Global proxy settings should be enabled before enabling + description: 'Global proxy settings should be enabled before enabling per-vlan + + ' ip_name_servers: type: list items: @@ -4459,7 +4485,9 @@ keys: required: true description: 'Action as string - Example: "deny ipv6 any any"' + Example: "deny ipv6 any any" + + ' ipv6_hardware: type: dict keys: @@ -4508,7 +4536,9 @@ keys: required: true description: 'Action as string - Example: "permit 1b11:3a00:22b0:0082::/64 eq 128"' + Example: "permit 1b11:3a00:22b0:0082::/64 eq 128" + + ' ipv6_standard_access_lists: type: list primary_key: name @@ -4543,7 +4573,9 @@ keys: required: true description: 'Action as string - Example: "deny ipv6 any any"' + Example: "deny ipv6 any any" + + ' ipv6_static_routes: type: list items: @@ -5360,7 +5392,9 @@ keys: type: list items: type: str - description: Name of Interface Group + description: 'Name of Interface Group + + ' management_accounts: type: dict keys: @@ -5523,7 +5557,9 @@ keys: description: 'These should not be mixed with the new keys above. Octa activates `eos-native` provider and it is the only provider currently - supported by EOS.' + supported by EOS. + + ' management_api_http: type: dict keys: @@ -6664,7 +6700,9 @@ keys: required: true description: 'Match as string - Example: "as-range 1-100 result accept"' + Example: "as-range 1-100 result accept" + + ' platform: type: dict description: Every key below this point is platform dependent. @@ -7811,7 +7849,9 @@ keys: required: true description: 'Action as string - Example: "permit 10.255.0.0/27 eq 32"' + Example: "permit 10.255.0.0/27 eq 32" + + ' priority_flow_control: type: dict description: 'Global Priority Flow Control settings. @@ -7881,7 +7921,9 @@ keys: ' override_action_drop: type: bool - description: Override configured action on stuck queue to drop. + description: 'Override configured action on stuck queue to drop. + + ' prompt: type: str ptp: @@ -8586,7 +8628,9 @@ keys: no_drop: type: bool required: true - description: Enable Priority Flow Control frames on this queue + description: 'Enable Priority Flow Control frames on this queue + + ' queue_monitor_length: type: dict keys: @@ -13735,7 +13779,9 @@ keys: required: true description: 'Action as string - Example: "deny ip any any"' + Example: "deny ip any any" + + ' static_routes: type: list items: @@ -14091,8 +14137,10 @@ keys: source: type: str required: false - description: TCAM profile local source path. Used to read the TCAM profile - from a local path existing on the device. + description: 'TCAM profile local source path. Used to read the TCAM + profile from a local path existing on the device. + + ' terminal: type: dict display_name: Terminal Settings @@ -14349,9 +14397,11 @@ keys: transceiver_qsfp_default_mode_4x10: type: bool default: true - description: On all front panel ports which support this feature, the following + description: 'On all front panel ports which support this feature, the following global configuration command changes the QSFP mode from 40G to 4x10G (default). When set to false the command reverts the default QSFP mode back to 40G. + + ' tunnel_interfaces: type: list primary_key: name @@ -14437,8 +14487,10 @@ keys: description: Enable Path MTU Discovery On Tunnel eos_cli: type: str - description: Multiline String with EOS CLI rendered directly on the Tunnel + description: 'Multiline String with EOS CLI rendered directly on the Tunnel interface in the final EOS configuration. + + ' virtual_source_nat_vrfs: type: list primary_key: name @@ -15259,8 +15311,10 @@ keys: type: bool eos_cli: type: str - description: Multiline String with EOS CLI rendered directly on the Vxlan + description: 'Multiline String with EOS CLI rendered directly on the Vxlan interface in the final EOS configuration. + + ' $defs: flow_tracking: type: dict diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/build-schemas.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/build-schemas.yml deleted file mode 100644 index a4fb2851578..00000000000 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/build-schemas.yml +++ /dev/null @@ -1,38 +0,0 @@ -# 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. ---- -- name: Create required output directories - tags: [eos_cli_config_gen] - delegate_to: localhost - run_once: true - block: - - name: "Create {{ role_schema_dir }}" - ansible.builtin.file: - path: "{{ role_schema_dir }}" - state: directory - mode: 0775 - - name: "Create {{ role_schema_fragments_dir }}" - ansible.builtin.file: - path: "{{ role_schema_fragments_dir }}" - state: directory - mode: 0775 - -- name: Gather AVD Schema Fragments for eos_cli_config_gen - tags: [eos_cli_config_gen] - run_once: true - ansible.builtin.copy: - content: "{{ license_header ~ (query('ansible.builtin.file', *schema_files) | map('from_yaml') | ansible.builtin.combine(recursive=True) | to_nice_yaml(indent=2, sort_keys=false)) }}" - dest: "{{ role_schema_path }}" - mode: 0664 - vars: - license_header: "{{ '# ' ~ (lookup('ansible.builtin.file', role_path ~ '/../../../../../development/license-short.txt') | replace('\n', '\n# ')) ~ '\n' }}" - schema_files: "{{ query('ansible.builtin.fileglob', role_schema_fragments_glob) | arista.avd.natural_sort }}" - -- name: Convert AVD Schema to JSON Schema - tags: [eos_cli_config_gen] - run_once: true - ansible.builtin.copy: - content: "{{ role_name | arista.avd.convert_schema(type='jsonschema') | to_nice_json(indent=2, sort_keys=false) }}" - dest: "{{ role_schema_json_schema_path }}" - mode: 0664 diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/main.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/main.yml index d76c7528ed5..fe711242a97 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/main.yml +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/tasks/main.yml @@ -46,6 +46,7 @@ schema_id: "{{ role_name }}" conversion_mode: "{{ avd_data_conversion_mode }}" validation_mode: "{{ avd_data_validation_mode }}" + #cprofile_file: "config-{{inventory_hostname}}.prof" delegate_to: localhost register: eosconfig @@ -60,5 +61,6 @@ validation_mode: "{{ avd_data_validation_mode }}" add_md_toc: true md_toc_skip_lines: 3 + #cprofile_file: "docs-{{inventory_hostname}}.prof" delegate_to: localhost when: generate_device_documentation | arista.avd.default(true) diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/application-traffic-recognition.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/application-traffic-recognition.md index 99f19d0fe6e..a5fbfa893d6 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/application-traffic-recognition.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/application-traffic-recognition.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bfd-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bfd-settings.md index 291230f65d8..09067a29c59 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bfd-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bfd-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bgp-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bgp-settings.md index 4f108dc6cf5..a0358d6499b 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bgp-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/bgp-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-settings.md index e27f40ccd2e..c7ddc03657e 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-settings.md @@ -1,5 +1,5 @@ @@ -8,7 +8,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [cvp_ingestauth_key](## "cvp_ingestauth_key") | String | | | | On-premise CVP ingest auth key. If set, TerminAttr will be configured with key-based authentication for on-premise CVP.
If not set, TerminAttr will be configured with certificate based authentication:
- On-premise using token onboarding. Default token path is '/tmp/token'.
- CVaaS using token-secure onboarding. Default token path is '/tmp/cv-onboarding-token'.
Token must be copied to the device first. | - | [cvp_instance_ip](## "cvp_instance_ip") deprecated | String | | | | IPv4 address or DNS name for CloudVision.
This variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.This key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead. | + | [cvp_instance_ip](## "cvp_instance_ip") deprecated | String | | | | IPv4 address or DNS name for CloudVision.
This variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.
This key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead. | | [cvp_instance_ips](## "cvp_instance_ips") | List, items: String | | | | List of IPv4 addresses or DNS names for CloudVision.
For on-premise CloudVision enter all the nodes of the cluster.
For CloudVision as a Service enter the DNS name of the instance.
`eos_designs` only supports one CloudVision cluster.
| | [  - <str>](## "cvp_instance_ips.[]") | String | | | | IPv4 address or DNS name for CloudVision | | [cvp_token_file](## "cvp_token_file") | String | | | | cvp_token_file is the path to the token file on the switch.
If not set the default locations for on-premise or CVaaS will be used.
See cvp_ingestauth_key for details. | diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-tags.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-tags.md index fd4824a5d3e..1e158f4aab2 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-tags.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cloudvision-tags.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints-keys.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints-keys.md index 5c984912ac7..48ce2e4bba8 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints-keys.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints-keys.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints.md index e8df7811b7f..8b16c3cde75 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/connected-endpoints.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md index 7c59f2feeb3..fa99614b177 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/core-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/custom-structured-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/custom-structured-configuration.md index 4a0eaf007d1..0355c44fe76 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/custom-structured-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/custom-structured-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cv-topology.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cv-topology.md index cb8d7d232db..b4064589e2f 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cv-topology.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/cv-topology.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md index 21cb0cf7a16..f5292b85f12 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-interfaces.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-node-types.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-node-types.md index 4ea79322927..113ab0ab650 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-node-types.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/default-node-types.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/design.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/design.md index ba56fd10e21..fb0bb7fc3a1 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/design.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/design.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-settings.md index 91caaecd7d3..dd3817340c1 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md index 4dee626a3b6..d7d854c1d85 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/evpn-vlan-bundles.md @@ -1,5 +1,5 @@ @@ -14,7 +14,7 @@ | [    rd_override](## "evpn_vlan_bundles.[].rd_override") | String | | | | By default the MAC VRF bundle RD will be derived from mac_vrf_id_base + bundle_id.
The rt_override allows us to override this value and statically define it.
rd_override will default to rt_override or vni_override if set.

rd_override supports two formats:
- A single number which will be used in the RD assigned number field instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rd_type' for details).
- A full RD string with colon seperator which will override the full RD.
| | [    evpn_l2_multi_domain](## "evpn_vlan_bundles.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend VLAN-Aware Bundle to remote EVPN domains.
Overrides `.[].evpn_l2_multi_domain`.
| | [    bgp](## "evpn_vlan_bundles.[].bgp") | Dictionary | | | | | - | [      raw_eos_cli](## "evpn_vlan_bundles.[].bgp.raw_eos_cli") | String | | | | EOS cli commands rendered on router_bgp.vlans-aware-bundle. | + | [      raw_eos_cli](## "evpn_vlan_bundles.[].bgp.raw_eos_cli") | String | | | | EOS cli commands rendered on router_bgp.vlans-aware-bundle.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-ip-addressing.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-ip-addressing.md index 245150d1c50..8ad6497e719 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-ip-addressing.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-ip-addressing.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-settings.md index d96d13c838e..cadc21f1590 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-settings.md @@ -1,5 +1,5 @@ @@ -11,7 +11,7 @@ | [only_local_vlan_trunk_groups](## "only_local_vlan_trunk_groups") | Boolean | | `False` | | A vlan can have many trunk_groups assigned.
To avoid unneeded configuration changes on all leaf switches when a new trunk group is added,
this feature will only configure the vlan trunk groups matched with local connected_endpoints.
See "Details on only_local_vlan_trunk_groups" below.
Requires "enable_trunk_groups: true".
| | [p2p_uplinks_mtu](## "p2p_uplinks_mtu") | Integer | | `9214` | Min: 68
Max: 65535 | Point to Point Links MTU. | | [p2p_uplinks_qos_profile](## "p2p_uplinks_qos_profile") | String | | | | QOS Profile assigned on all infrastructure links. | - | [shutdown_interfaces_towards_undeployed_peers](## "shutdown_interfaces_towards_undeployed_peers") | Boolean | | `False` | | - It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.

```yaml
# Use at the host level
is_deployed: < true or false or default -> true >
```

- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.
- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.
- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.
- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.
- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network. | + | [shutdown_interfaces_towards_undeployed_peers](## "shutdown_interfaces_towards_undeployed_peers") | Boolean | | `False` | | - It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.

```yaml
# Use at the host level
is_deployed: < true or false or default -> true >
```

- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.
- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.
- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.
- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.
- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network.
| | [trunk_groups](## "trunk_groups") | Dictionary | | | | | | [  mlag](## "trunk_groups.mlag") | Dictionary | | | | Trunk Group used for MLAG VLAN (Typically VLAN 4094).
| | [    name](## "trunk_groups.mlag.name") | String | | `MLAG` | | | @@ -33,7 +33,7 @@ | [        description](## "underlay_multicast_rps.[].nodes.[].description") | String | | `PIM RP` | | Interface description. | | [    groups](## "underlay_multicast_rps.[].groups") | List, items: String | | | | List of groups to associate with the RP address set in 'rp'.
If access_list_name is set, a standard access-list will be configured matching these groups.
Otherwise the groups are configured directly on the RP command.
| | [      - <str>](## "underlay_multicast_rps.[].groups.[]") | String | | | | Multicast Group IPv4 prefix/mask. | - | [    access_list_name](## "underlay_multicast_rps.[].access_list_name") | String | | | | Name of standard Access-List. | + | [    access_list_name](## "underlay_multicast_rps.[].access_list_name") | String | | | | Name of standard Access-List.
| | [underlay_rfc5549](## "underlay_rfc5549") | Boolean | | `False` | | Point to Point Underlay with RFC 5549(eBGP), i.e. IPv6 Unnumbered.
Requires "underlay_routing_protocol: ebgp".
| | [underlay_routing_protocol](## "underlay_routing_protocol") | String | | | Value is converted to lower case.
Valid Values:
- ebgp
- ospf
- isis
- isis-sr
- isis-ldp
- isis-sr-ldp
- ospf-ldp | - The following underlay routing protocols are supported:
- EBGP (default for l3ls-evpn)
- OSPF.
- ISIS.
- ISIS-SR*.
- ISIS-LDP*.
- ISIS-SR-LDP*.
- OSPF-LDP*.
- The variables should be applied to all devices in the fabric.
*Only supported with core_interfaces data model.
| | [uplink_ptp](## "uplink_ptp") | Dictionary | | | | Enable PTP on all infrastructure links. | diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-topology.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-topology.md index e935331c05f..ea123197f9f 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-topology.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/fabric-topology.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/is-deployed.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/is-deployed.md index 918a4833f0a..15a47b53583 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/is-deployed.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/is-deployed.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md index 345e079a142..43a6e5dbe1f 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/isis-settings.md @@ -1,5 +1,5 @@ @@ -9,9 +9,9 @@ | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [isis_advertise_passive_only](## "isis_advertise_passive_only") | Boolean | | `False` | | | | [isis_area_id](## "isis_area_id") | String | | `49.0001` | | | - | [isis_default_circuit_type](## "isis_default_circuit_type") | String | | `level-2` | Valid Values:
- level-1-2
- level-1
- level-2 | These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level. | + | [isis_default_circuit_type](## "isis_default_circuit_type") | String | | `level-2` | Valid Values:
- level-1-2
- level-1
- level-2 | These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level.
| | [isis_default_is_type](## "isis_default_is_type") | String | | `level-2` | Valid Values:
- level-1-2
- level-1
- level-2 | | - | [isis_default_metric](## "isis_default_metric") | Integer | | `50` | | These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level. | + | [isis_default_metric](## "isis_default_metric") | Integer | | `50` | | These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level.
| | [isis_maximum_paths](## "isis_maximum_paths") | Integer | | | | Number of path to configure in ECMP for ISIS. | | [isis_ti_lfa](## "isis_ti_lfa") | Dictionary | | | | | | [  enabled](## "isis_ti_lfa.enabled") | Boolean | | `False` | | | diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md index fe5836e37cc..c3c3591bdc7 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/l3-edge.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-interface-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-interface-settings.md index 3b835a2e424..2d4fcb09883 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-interface-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-interface-settings.md @@ -1,5 +1,5 @@ @@ -10,7 +10,7 @@ | [default_mgmt_method](## "default_mgmt_method") | String | | `oob` | Valid Values:
- oob
- inband
- none | `default_mgmt_method` controls the default VRF and source interface used for the following management and monitoring protocols configured with `eos_designs`:
- `cv_settings`
- `dns_settings`
- `ntp_settings`
- `sflow_settings`

`oob` means the protocols will be configured with the VRF set by `mgmt_interface_vrf` and `mgmt_interface` as the source interface.
`inband` means the protocols will be configured with the VRF set by `inband_mgmt_vrf` and `inband_mgmt_interface` as the source interface.
`none` means the VRF and or interface must be manually set for each protocol.
This can be overridden under the settings for each protocol.
| | [mgmt_destination_networks](## "mgmt_destination_networks") | List, items: String | | | | List of IPv4 prefixes to configure as static routes towards the OOB Management interface gateway.
Replaces the default route. | | [  - <str>](## "mgmt_destination_networks.[]") | String | | | | IPv4_address/Mask. | - | [mgmt_gateway](## "mgmt_gateway") | String | | | | OOB Management interface gateway in IPv4 format.
Used as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'. | + | [mgmt_gateway](## "mgmt_gateway") | String | | | | OOB Management interface gateway in IPv4 format.
Used as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.
| | [mgmt_interface](## "mgmt_interface") | String | | `Management1` | | OOB Management interface. | | [mgmt_interface_description](## "mgmt_interface_description") | String | | `oob_management` | | Management interface description.
| | [mgmt_interface_vrf](## "mgmt_interface_vrf") | String | | `MGMT` | | OOB Management VRF. | diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md index d1193779a64..b818b01c326 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-settings.md @@ -1,5 +1,5 @@ @@ -14,10 +14,10 @@ | [    delay](## "event_handlers.[].delay") | Integer | | | | Event-handler delay in seconds
| | [    trigger](## "event_handlers.[].trigger") | String | | | Valid Values:
- on-boot
- on-logging
- on-startup-config | Configure event trigger condition.
| | [    regex](## "event_handlers.[].regex") | String | | | | Regular expression to use for searching log messages. Required for on-logging trigger
| - | [    asynchronous](## "event_handlers.[].asynchronous") | Boolean | | `False` | | Set the action to be non-blocking. | + | [    asynchronous](## "event_handlers.[].asynchronous") | Boolean | | `False` | | Set the action to be non-blocking.
| | [ipv6_mgmt_destination_networks](## "ipv6_mgmt_destination_networks") | List, items: String | | | | List of IPv6 prefixes to configure as static routes towards the OOB IPv6 Management interface gateway.
Replaces the default route.
| | [  - <str>](## "ipv6_mgmt_destination_networks.[]") | String | | | | IPv6_network/Mask. | - | [ipv6_mgmt_gateway](## "ipv6_mgmt_gateway") | String | | | Format: ipv6 | OOB Management interface gateway in IPv6 format.
Used as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'. | + | [ipv6_mgmt_gateway](## "ipv6_mgmt_gateway") | String | | | Format: ipv6 | OOB Management interface gateway in IPv6 format.
Used as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'.
| | [local_users](## "local_users") | List, items: Dictionary | | | | | | [  - name](## "local_users.[].name") | String | Required, Unique | | | Username | | [    disabled](## "local_users.[].disabled") | Boolean | | | | If true, the user will be removed and all other settings are ignored.
Useful for removing the default "admin" user.
| diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-snmp-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-snmp-settings.md index 977ea4d0ee4..4cbb8119890 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-snmp-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-snmp-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-source-interfaces-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-source-interfaces-settings.md index b74a68d70a4..e7d29c21246 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-source-interfaces-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/management-source-interfaces-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-ports.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-ports.md index 72fc57137ff..154d99f0688 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-ports.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-ports.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-keys.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-keys.md index 06a4782e90e..86ddbe86a80 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-keys.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-keys.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md index fc866eb4045..9fcce546e22 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-l2vlans-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md index bcc85af8f75..46271259c88 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-point-to-point-services-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-point-to-point-services-settings.md index f934a51f933..98e71271ec2 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-point-to-point-services-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-point-to-point-services-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-bgp-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-bgp-settings.md index f6bd79344a4..e014ed510c6 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-bgp-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-bgp-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-l3-interfaces-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-l3-interfaces-settings.md index a257b32c475..340a4d23d65 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-l3-interfaces-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-l3-interfaces-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-loopbacks-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-loopbacks-settings.md index 05dbcdf6b26..645a71ee828 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-loopbacks-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-loopbacks-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md index 90c199e48ab..0b56f21b316 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-ospf-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md index 9e3ef6f1c74..a7fc699e0b9 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md index c6ed6e1b660..269e92e87a3 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-vrfs-svis-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services.md index 55886ecc316..f4937178b68 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/new-network-services-bgp-vrf-config.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/new-network-services-bgp-vrf-config.md index c114425de54..1d6e6f1bb71 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/new-network-services-bgp-vrf-config.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/new-network-services-bgp-vrf-config.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-bgp-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-bgp-configuration.md index d93954f17d9..41a509101e1 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-bgp-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-bgp-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md index dd96d41920d..ca3ecf5f3fa 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-common-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-ipvpn-gateway-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-ipvpn-gateway-configuration.md index 5ff3f0c7ef2..a306e22b728 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-ipvpn-gateway-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-ipvpn-gateway-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-multi-domain-gateway-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-multi-domain-gateway-configuration.md index 0f09ca5762f..dc4a6656c71 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-multi-domain-gateway-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-multi-domain-gateway-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-services-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-services-configuration.md index 31390bc1b13..f6148532803 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-services-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-evpn-services-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-inband-management-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-inband-management-configuration.md index d5bfcd5b9e7..ccc75fc98e0 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-inband-management-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-inband-management-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-isis-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-isis-configuration.md index 26593b142d8..ba64b45c913 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-isis-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-isis-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-key-wan-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-key-wan-configuration.md index abecd647174..5e93ed08d50 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-key-wan-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-key-wan-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md index 75c2e77d040..6442462ce1f 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-keys.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-l2-mlag-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-l2-mlag-configuration.md index aa74e156539..0e083b96b34 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-l2-mlag-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-l2-mlag-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-loopback-vtep-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-loopback-vtep-configuration.md index 56a4bcf7b1f..f6c3ac2f885 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-loopback-vtep-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-loopback-vtep-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-mpls-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-mpls-configuration.md index a3aa086b4d5..c6a55ef93be 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-mpls-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-mpls-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-ptp-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-ptp-configuration.md index 3036db04c4e..6dd0dc6c9ef 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-ptp-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-ptp-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md index 0c8b584e00f..d5f35750e4b 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-structure.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-uplink-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-uplink-configuration.md index 65e241fe24d..d33dc4552b4 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-uplink-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-uplink-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-wan-configuration.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-wan-configuration.md index 6bae26a4ff2..50c406a7295 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-wan-configuration.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/node-type-wan-configuration.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ospf-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ospf-settings.md index 6ce46dc6ceb..4800afff3fc 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ospf-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ospf-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/overlay-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/overlay-settings.md index 4af7a8d4713..dfa5414c1c3 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/overlay-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/overlay-settings.md @@ -1,5 +1,5 @@ @@ -7,11 +7,11 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [bgp_mesh_pes](## "bgp_mesh_pes") | Boolean | | `False` | | Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.
Only supported in combination with MPLS overlay. | + | [bgp_mesh_pes](## "bgp_mesh_pes") | Boolean | | `False` | | Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.
Only supported in combination with MPLS overlay.
| | [mlag_ibgp_peering_vrfs](## "mlag_ibgp_peering_vrfs") | Dictionary | | | | On mlag leafs, an SVI interface is defined per vrf, to establish iBGP peering (required when there are MLAG leafs in topology).
The SVI id will be derived from the base vlan defined: mlag_ibgp_peering_vrfs.base_vlan + (vrf_id or vrf_vni) - 1.
Depending on the values of vrf_id / vrf_vni it may be required to adjust the base_vlan to avoid overlaps or invalid vlan ids.
The SVI ip address derived from mlag_l3_peer_ipv4_pool is re-used across all iBGP peerings.
| | [  base_vlan](## "mlag_ibgp_peering_vrfs.base_vlan") | Integer | | `3000` | Min: 1
Max: 4093 | | | [overlay_cvx_servers](## "overlay_cvx_servers") | List, items: String | | | | List of CVX vxlan overlay controllers.
Required if overlay_routing_protocol == CVX.
CVX servers (VMs) are peering using their management interface, so mgmt_ip must be set for all CVX servers.
| - | [  - <str>](## "overlay_cvx_servers.[]") | String | | | | 'inventory_hostname' of CVX server | + | [  - <str>](## "overlay_cvx_servers.[]") | String | | | | 'inventory_hostname' of CVX server
| | [overlay_her_flood_list_per_vni](## "overlay_her_flood_list_per_vni") | Boolean | | `False` | | When using Head-End Replication, configure flood-lists per VNI.
By default HER will be configured with a common flood-list containing all VTEPs.
This behavior can be changed to per-VNI flood-lists by setting `overlay_her_flood_list_per_vni: true`.
This will make `eos_designs` consider configured VLANs per VTEP, and only include the relevant VTEPs to each VNI's flood-list.
| | [overlay_her_flood_list_scope](## "overlay_her_flood_list_scope") | String | | `fabric` | Valid Values:
- fabric
- dc | When using Head-End Replication, set the scope of flood-lists to Fabric or DC.
By default all VTEPs in the Fabric (part of the inventory group referenced by "fabric_name") are added to the flood-lists.
This can be changed to all VTEPs in the DC (sharing the same "dc_name" value).
This is useful if Border Leaf switches are dividing the VXLAN overlay into separate domains.
| | [overlay_loopback_description](## "overlay_loopback_description") | String | | | | Customize the description on overlay interface Loopback0. | @@ -21,13 +21,13 @@ | [  admin_subfield_offset](## "overlay_rd_type.admin_subfield_offset") | String | | | | Offset can only be used if admin_subfield is an integer between <0-4294967295> or 'switch_id'.
Total value of admin_subfield + admin_subfield_offset must be <= 4294967295.
| | [  vrf_admin_subfield](## "overlay_rd_type.vrf_admin_subfield") | String | | | | The method for deriving RD Administrator subfield (first part of RD) for VRF services:
- 'overlay_loopback_ip' means the IP address of Loopback0.
- 'vtep_loopback' means the IP address of the VTEP loopback interface.
- 'bgp_as' means the AS number of the device.
- 'switch_id' means the 'id' value of the device.
- Any without mask.
- Integer between <0-65535>.
- Integer between <0-4294967295>.

'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.
| | [  vrf_admin_subfield_offset](## "overlay_rd_type.vrf_admin_subfield_offset") | String | | | | Offset can only be used if 'vrf_admin_subfield' is an integer between <0-4294967295> or 'switch_id'.
Total value of 'vrf_admin_subfield' + 'vrf_admin_subfield_offset' must be <= 4294967295.
| - | [  vlan_assigned_number_subfield](## "overlay_rd_type.vlan_assigned_number_subfield") | String | | `mac_vrf_id` | Valid Values:
- mac_vrf_id
- mac_vrf_vni
- vlan_id | The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):
- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.
- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.
- 'vlan_id' will only use the 'vlan_id' and ignores all base values.

These methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order). | + | [  vlan_assigned_number_subfield](## "overlay_rd_type.vlan_assigned_number_subfield") | String | | `mac_vrf_id` | Valid Values:
- mac_vrf_id
- mac_vrf_vni
- vlan_id | The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):
- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.
- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.
- 'vlan_id' will only use the 'vlan_id' and ignores all base values.

These methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order).
| | [overlay_routing_protocol](## "overlay_routing_protocol") | String | | `ebgp` | Value is converted to lower case.
Valid Values:
- ebgp
- ibgp
- cvx
- her
- none | - The following overlay routing protocols are supported:
- eBGP: Configures fabric with eBGP, default for l3ls-evpn design.
- iBGP: Configured fabric with iBGP, only supported with OSPF or ISIS variants in underlay, default for mpls design.
- CVX: Configures fabric to leverage CloudVision eXchange as the overlay controller.
- HER: Configures fabric with Head-End Replication, configures static VXLAN flood-lists instead of using a dynamic overlay protocol.
- none: No overlay configuration will be generated, default for l2ls design.
| | [overlay_routing_protocol_address_family](## "overlay_routing_protocol_address_family") | String | | `ipv4` | Valid Values:
- ipv4
- ipv6 | When set to `ipv6`, enable overlay EVPN peering with IPv6 addresses.
This feature depends on underlay_ipv6 variable. As of today, only RFC5549 is capable to transport IPv6 in the underlay.
| | [overlay_rt_type](## "overlay_rt_type") | Dictionary | | | | Configuration options for the Administrator subfield (first part of RT) and the Assigned Number subfield (second part of RT).

By default Route Targets (RT) are set to:
- `<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>:<(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id>` for VLANs and VLAN-Aware Bundles with L2 vlans.
- `:` for VLAN-Aware Bundles with SVIs.
- `:` for VLAN-Aware Bundles defined under 'evpn_vlan_bundles'.
- `:` for VRFs.

Notes:
RT is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.
When using 32-bit ASN/number the VNI can only be a 16-bit number. Alternatively use vlan_id/vrf_id as assigned number.
For 16-bit ASN/number the assigned number can be a 32-bit number.
| | [  admin_subfield](## "overlay_rt_type.admin_subfield") | String | | `vrf_id` | | The method for deriving RT Administrator subfield (first part of RT):
- 'vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.
- 'vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id` for VLANs, `(vrf_vni or vrf_id)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.
- 'id' means `vlan_id` for VLANs, `(vrf_id or vrf_vni)` for VRFs and `id` for bundles defined under 'evpn_vlan_bundles'.
- 'bgp_as' means the AS number of the device.
- Integer between <0-65535>.
- Integer between <0-4294967295>.

The 'vrf_id' and 'vrf_vni' methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).
The 'vrf_id', 'vrf_vni' and 'id' methods can be overridden per bundle defined under `evpn_vlan_bundles` using 'rt_override'.
| | [  vrf_admin_subfield](## "overlay_rt_type.vrf_admin_subfield") | String | | `vrf_id` | | The method for deriving RT Administrator subfield (first part of RT) for VRF services:
- 'id' means `(vrf_id or vrf_vni)`.
- 'vrf_id' means `(vrf_id or vrf_vni)`.
- 'vrf_vni' means `(vrf_vni or vrf_id)`.
- 'bgp_as' means the AS number of the device.
- Integer between <0-65535>.
- Integer between <0-4294967295>.

'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.
| - | [  vlan_assigned_number_subfield](## "overlay_rt_type.vlan_assigned_number_subfield") | String | | `mac_vrf_id` | Valid Values:
- mac_vrf_id
- mac_vrf_vni
- vlan_id | The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):
- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.
- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.
- 'vlan_id' will only use the 'vlan_id' and ignores all base values.

These methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order). | + | [  vlan_assigned_number_subfield](## "overlay_rt_type.vlan_assigned_number_subfield") | String | | `mac_vrf_id` | Valid Values:
- mac_vrf_id
- mac_vrf_vni
- vlan_id | The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):
- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.
- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.
- 'vlan_id' will only use the 'vlan_id' and ignores all base values.

These methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).
| | [vtep_vvtep_ip](## "vtep_vvtep_ip") | String | | | | IP Address used as Virtual VTEP. Will be configured as secondary IP on Loopback1.
This is only needed for centralized routing designs.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md index bbd31ece526..6ce8b1a7742 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/platform-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/port-profiles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/port-profiles.md index 4623762f264..e572a7c566a 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/port-profiles.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/port-profiles.md @@ -1,5 +1,5 @@ @@ -9,7 +9,7 @@ | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [port_profiles](## "port_profiles") | List, items: Dictionary | | | | Optional profiles to share common settings for connected_endpoints and/or network_ports.
Keys are the same used under endpoints adapters. Keys defined under endpoints adapters take precedence.
| | [  - profile](## "port_profiles.[].profile") | String | Required, Unique | | | Port profile name. | - | [    parent_profile](## "port_profiles.[].parent_profile") | String | | | | Parent profile is optional.
Port_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile). | + | [    parent_profile](## "port_profiles.[].parent_profile") | String | | | | Parent profile is optional.
Port_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile).
| | [    speed](## "port_profiles.[].speed") | String | | | | Set adapter speed in the format `` or `forced ` or `auto `.
If not specified speed will be auto.
| | [    description](## "port_profiles.[].description") | String | | | | By default the description is built leveraging `_`.
When set this key will overide the default value on the physical ports.
| | [    enabled](## "port_profiles.[].enabled") | Boolean | | `True` | | Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.
| diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ptp.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ptp.md index 416a1c4b81d..fd9d66de666 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ptp.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/ptp.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-custom-templates.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-custom-templates.md index 6b03222c1de..610d496be2d 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-custom-templates.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-custom-templates.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-documentation-output-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-documentation-output-settings.md index c5da4e62ae5..79ac0635b15 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-documentation-output-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-documentation-output-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-input-validation.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-input-validation.md index 8dbba294403..be15e16d7a9 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-input-validation.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/role-input-validation.md @@ -1,5 +1,5 @@ @@ -7,8 +7,8 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [avd_data_conversion_mode](## "avd_data_conversion_mode") | String | | `debug` | Valid Values:
- disabled
- error
- warning
- info
- debug
- quiet | Conversion Mode for AVD input data conversion.
Input data conversion will perform type conversion of input variables as defined in the schema.
The type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.
During conversion, messages will generated with information about the host(s) and key(s) which required conversion.
"disabled" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
"quiet" will not produce any messages | - | [avd_data_validation_mode](## "avd_data_validation_mode") | String | | `warning` | Valid Values:
- disabled
- error
- warning
- info
- debug | Validation Mode for AVD input data validation.
Input data validation will validate the input variables according to the schema.
During validation, messages will generated with information about the host(s) and key(s) which failed validation.
"disabled" means that validation will not run.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v. | + | [avd_data_conversion_mode](## "avd_data_conversion_mode") | String | | `debug` | Valid Values:
- disabled
- error
- warning
- info
- debug
- quiet | Conversion Mode for AVD input data conversion.
Input data conversion will perform type conversion of input variables as defined in the schema.
The type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.
During conversion, messages will generated with information about the host(s) and key(s) which required conversion.
"disabled" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
"quiet" will not produce any messages
| + | [avd_data_validation_mode](## "avd_data_validation_mode") | String | | `warning` | Valid Values:
- disabled
- error
- warning
- info
- debug | Validation Mode for AVD input data validation.
Input data validation will validate the input variables according to the schema.
During validation, messages will generated with information about the host(s) and key(s) which failed validation.
"disabled" means that validation will not run.
"error" will produce error messages and fail the task.
"warning" will produce warning messages.
"info" will produce regular log messages.
"debug" will produce hidden debug messages viewable with -v.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md index 76974353fc6..6532628ee39 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/svi-profiles.md @@ -1,5 +1,5 @@ @@ -9,7 +9,7 @@ | -------- | ---- | -------- | ------- | ------------------ | ----------- | | [svi_profiles](## "svi_profiles") | List, items: Dictionary | | | | Profiles to share common settings for SVIs under `.[].vrfs.svis`.
Keys are the same used under SVIs. Keys defined under SVIs take precedence.
Note: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:
1. svi.nodes[inventory_hostname].structured_config
2. svi_profile.nodes[inventory_hostname].structured_config
3. svi_parent_profile.nodes[inventory_hostname].structured_config
4. svi.structured_config
5. svi_profile.structured_config
6. svi_parent_profile.structured_config
| | [  - profile](## "svi_profiles.[].profile") | String | Required, Unique | | | Profile name | - | [    parent_profile](## "svi_profiles.[].parent_profile") | String | | | | Parent SVI profile name to apply.
svi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile). | + | [    parent_profile](## "svi_profiles.[].parent_profile") | String | | | | Parent SVI profile name to apply.
svi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).
| | [    nodes](## "svi_profiles.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
| | [      - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname | | [        name](## "svi_profiles.[].nodes.[].name") | String | | | | VLAN name | diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/system-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/system-settings.md index 40243bb2fa5..0d1fb8c7010 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/system-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/system-settings.md @@ -1,5 +1,5 @@ @@ -27,7 +27,7 @@ | [  aging_time](## "mac_address_table.aging_time") | Integer | | | Min: 0
Max: 1000000 | Aging time in seconds 10-1000000.
Enter 0 to disable aging.
| | [queue_monitor_length](## "queue_monitor_length") | Dictionary | | | | | | [  enabled](## "queue_monitor_length.enabled") | Boolean | Required | | | | - | [  notifying](## "queue_monitor_length.notifying") | Boolean | | | | If True, `eos_designs` will configure `queue-monitor length notifying` according to the
`platform_settings.[].feature_support.queue_monitor_length_notify` setting. | + | [  notifying](## "queue_monitor_length.notifying") | Boolean | | | | If True, `eos_designs` will configure `queue-monitor length notifying` according to the
`platform_settings.[].feature_support.queue_monitor_length_notify` setting.
| | [  default_thresholds](## "queue_monitor_length.default_thresholds") | Dictionary | | | | | | [    high](## "queue_monitor_length.default_thresholds.high") | Integer | Required | | | Default high threshold for Ethernet Interfaces.
| | [    low](## "queue_monitor_length.default_thresholds.low") | Integer | | | | Default low threshold for Ethernet Interfaces.
Low threshold support is platform dependent.
| @@ -40,7 +40,7 @@ | [redundancy](## "redundancy") | Dictionary | | | | Redundancy for chassis platforms with dual supervisors | Optional. | | [  protocol](## "redundancy.protocol") | String | | | Valid Values:
- sso
- rpr | | | [serial_number](## "serial_number") | String | | | | Serial Number of the device.
Used for documentation purpose in the fabric documentation as can also be used by the 'eos_config_deploy_cvp' role.
"serial_number" can also be set directly under node type settings.
If both are set, the value under node type settings takes precedence.
| - | [system_mac_address](## "system_mac_address") | String | | | | Set to the same MAC address as available in "show version" on the device.
"system_mac_address" can also be set under node type settings.
If both are set, the value under node type settings takes precedence. | + | [system_mac_address](## "system_mac_address") | String | | | | Set to the same MAC address as available in "show version" on the device.
"system_mac_address" can also be set under node type settings.
If both are set, the value under node type settings takes precedence.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/type-setting.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/type-setting.md index 1de654cb2f1..ce8e58d01b8 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/type-setting.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/type-setting.md @@ -1,5 +1,5 @@ @@ -7,7 +7,7 @@ | Variable | Type | Required | Default | Value Restrictions | Description | | -------- | ---- | -------- | ------- | ------------------ | ----------- | - | [type](## "type") | String | | | Valid Values:
- | The `type:` variable needs to be defined for each device in the fabric.
This is leveraged to load the appropriate template to generate the configuration. | + | [type](## "type") | String | | | Valid Values:
- | The `type:` variable needs to be defined for each device in the fabric.
This is leveraged to load the appropriate template to generate the configuration.
| === "YAML" diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-bgp-peer-groups.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-bgp-peer-groups.md index b0dc8fc197e..ec2ef421132 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-bgp-peer-groups.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-bgp-peer-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-carriers.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-carriers.md index d70ab490fa2..70d5e110d07 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-carriers.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-carriers.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-cv-pathfinder-regions.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-cv-pathfinder-regions.md index c4d47c29d12..06e24f27a03 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-cv-pathfinder-regions.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-cv-pathfinder-regions.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md index 0b12c697e28..de806cff60a 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-interfaces-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-path-groups.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-path-groups.md index 64d40ccddab..acd44694e09 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-path-groups.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-path-groups.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-settings.md index 01f590ae8d1..ca58dd34be6 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-settings.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-settings.md @@ -1,5 +1,5 @@ diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-virtual-topologies.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-virtual-topologies.md index f17e57dc090..abc5a6b4b1d 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-virtual-topologies.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/wan-virtual-topologies.md @@ -1,5 +1,5 @@ @@ -28,7 +28,7 @@ | [      application_virtual_topologies](## "wan_virtual_topologies.policies.[].application_virtual_topologies") | List, items: Dictionary | | | | List of application specific virtual topologies. | | [        - application_profile](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].application_profile") | String | Required, Unique | | | The application profile to use for this virtual topology. It must be a defined `application_profile`. | | [          name](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].name") | String | | | | Optional name, if not set `-` is used. | - | [          id](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].id") | Integer | Required | | Min: 2
Max: 253 | ID of the AVT in each VRFs. ID must be unique across all virtual topologies in a policy.
ID 1 is reserved for the default_virtual_toplogy.
ID 254 is reserved for the control_plane_virtual_topology. | + | [          id](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].id") | Integer | | | Min: 2
Max: 253 | ID of the AVT in each VRFs. ID must be unique across all virtual topologies in a policy.
ID 1 is reserved for the default_virtual_toplogy.
ID 254 is reserved for the control_plane_virtual_topology. | | [          traffic_class](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].traffic_class") | Integer | | | Min: 0
Max: 7 | Set traffic-class for matched traffic. | | [          dscp](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].dscp") | Integer | | | Min: 0
Max: 63 | Set DSCP for matched traffic. | | [          constraints](## "wan_virtual_topologies.policies.[].application_virtual_topologies.[].constraints") | Dictionary | | | | | @@ -152,7 +152,7 @@ # ID of the AVT in each VRFs. ID must be unique across all virtual topologies in a policy. # ID 1 is reserved for the default_virtual_toplogy. # ID 254 is reserved for the control_plane_virtual_topology. - id: + id: # Set traffic-class for matched traffic. traffic_class: diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json index b21b7590f3c..7df19e4a2b1 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json +++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json @@ -344,7 +344,7 @@ "quiet" ], "default": "debug", - "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages", + "description": "Conversion Mode for AVD input data conversion.\nInput data conversion will perform type conversion of input variables as defined in the schema.\nThe type conversion is intended to help the user to identify minor issues with the input data, while still allowing the data to be validated.\nDuring conversion, messages will generated with information about the host(s) and key(s) which required conversion.\n\"disabled\" means that conversion will not run - avoid this since conversion is also handling data deprecation and upgrade.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n\"quiet\" will not produce any messages\n", "title": "AVD Data Conversion Mode" }, "avd_data_validation_mode": { @@ -357,7 +357,7 @@ "debug" ], "default": "warning", - "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.", + "description": "Validation Mode for AVD input data validation.\nInput data validation will validate the input variables according to the schema.\nDuring validation, messages will generated with information about the host(s) and key(s) which failed validation.\n\"disabled\" means that validation will not run.\n\"error\" will produce error messages and fail the task.\n\"warning\" will produce warning messages.\n\"info\" will produce regular log messages.\n\"debug\" will produce hidden debug messages viewable with -v.\n", "title": "AVD Data Validation Mode" }, "bfd_multihop": { @@ -486,7 +486,7 @@ "bgp_mesh_pes": { "type": "boolean", "default": false, - "description": "Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.\nOnly supported in combination with MPLS overlay.", + "description": "Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons.\nOnly supported in combination with MPLS overlay.\n", "title": "BGP Mesh PEs" }, "bgp_peer_groups": { @@ -4074,7 +4074,7 @@ }, "cvp_instance_ip": { "type": "string", - "description": "IPv4 address or DNS name for CloudVision.\nThis variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead.", + "description": "IPv4 address or DNS name for CloudVision.\nThis variable only supports an on-premise single-node cluster or the DNS name of a CloudVision as a Service instance.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use cvp_instance_ips instead.", "deprecated": true, "title": "CVP Instance IP" }, @@ -4351,7 +4351,7 @@ "asynchronous": { "type": "boolean", "default": false, - "description": "Set the action to be non-blocking.", + "description": "Set the action to be non-blocking.\n", "title": "Asynchronous" } }, @@ -4485,7 +4485,7 @@ "properties": { "raw_eos_cli": { "type": "string", - "description": "EOS cli commands rendered on router_bgp.vlans-aware-bundle.", + "description": "EOS cli commands rendered on router_bgp.vlans-aware-bundle.\n", "title": "Raw EOS CLI" } }, @@ -4829,7 +4829,7 @@ "ipv6_mgmt_gateway": { "type": "string", "format": "ipv6", - "description": "OOB Management interface gateway in IPv6 format.\nUsed as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'.", + "description": "OOB Management interface gateway in IPv6 format.\nUsed as next-hop for default gateway or static routes defined under 'ipv6_mgmt_destination_networks'.\n", "title": "IPv6 Management Gateway" }, "is_deployed": { @@ -4856,7 +4856,7 @@ "level-2" ], "default": "level-2", - "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level.", + "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level.\n", "title": "ISIS Default Circuit Type" }, "isis_default_is_type": { @@ -4872,7 +4872,7 @@ "isis_default_metric": { "type": "integer", "default": 50, - "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level.", + "description": "These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level.\n", "title": "ISIS Default Metric" }, "isis_maximum_paths": { @@ -8225,7 +8225,7 @@ }, "mgmt_gateway": { "type": "string", - "description": "OOB Management interface gateway in IPv4 format.\nUsed as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.", + "description": "OOB Management interface gateway in IPv4 format.\nUsed as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.\n", "title": "Management Gateway" }, "mgmt_interface": { @@ -13887,7 +13887,7 @@ "type": "array", "items": { "type": "string", - "description": "'inventory_hostname' of CVX server" + "description": "'inventory_hostname' of CVX server\n" }, "title": "Overlay CVX Servers" }, @@ -13951,7 +13951,7 @@ "vlan_id" ], "default": "mac_vrf_id", - "description": "The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order).", + "description": "The method for deriving RD Assigned Number subfield for VLAN services (second part of RD):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rd_override', 'rt_override' or 'vni_override' is set (preferred in this order).\n", "title": "VLAN Assigned Number Subfield" } }, @@ -14008,7 +14008,7 @@ "vlan_id" ], "default": "mac_vrf_id", - "description": "The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).", + "description": "The method for deriving RT Assigned Number subfield for VLAN services (second part of RT):\n- 'mac_vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id`.\n- 'mac_vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id`.\n- 'vlan_id' will only use the 'vlan_id' and ignores all base values.\n\nThese methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\n", "title": "VLAN Assigned Number Subfield" } }, @@ -14377,7 +14377,7 @@ }, "parent_profile": { "type": "string", - "description": "Parent profile is optional.\nPort_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile).", + "description": "Parent profile is optional.\nPort_profiles can refer to another port_profile to inherit settings in up to two levels (adapter->profile->parent_profile).\n", "title": "Parent Profile" }, "speed": { @@ -19600,7 +19600,7 @@ }, "notifying": { "type": "boolean", - "description": "If True, `eos_designs` will configure `queue-monitor length notifying` according to the\n`platform_settings.[].feature_support.queue_monitor_length_notify` setting.", + "description": "If True, `eos_designs` will configure `queue-monitor length notifying` according to the\n`platform_settings.[].feature_support.queue_monitor_length_notify` setting.\n", "title": "Notifying" }, "default_thresholds": { @@ -19704,7 +19704,7 @@ "shutdown_interfaces_towards_undeployed_peers": { "type": "boolean", "default": false, - "description": "- It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.\n\n```yaml\n# Use at the host level\nis_deployed: < true or false or default -> true >\n```\n\n- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.\n- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.\n- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.\n- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.\n- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network.", + "description": "- It is possible to provision configurations for a complete topology but flag devices as undeployed using the host level variable `is_deployed: false`.\n\n```yaml\n# Use at the host level\nis_deployed: < true or false or default -> true >\n```\n\n- By default, this will have no impact within the `eos_designs` role. Configs will still be generated by the `eos_cli_config_gen` role and will still be pushed by the `eos_config_deploy_eapi` directly to devices if used.\n- However, if the `eos_config_deploy_cvp` role is used to push configurations, CloudVision will ignore the devices flagged as `is_deployed: false` and not attempt to configure them.\n- If the device is not present in the network due to CloudVision not configuring the device, `eos_validate_state` role will fail tests on peers of the undeployed device trying to verify that interfaces are up.\n- To overcome this and shutdown interfaces towards undeployed peers, the variable `shutdown_interfaces_towards_undeployed_peers` can be used, satisfying the `eos_validate_state` role interface tests.\n- Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices are not present in the network.\n", "title": "Shutdown Interfaces Towards Undeployed Peers" }, "snmp_settings": { @@ -20301,7 +20301,7 @@ }, "parent_profile": { "type": "string", - "description": "Parent SVI profile name to apply.\nsvi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).", + "description": "Parent SVI profile name to apply.\nsvi_profiles can refer to another svi_profile to inherit settings in up to two levels (svi -> svi_profile -> svi_parent_profile).\n", "title": "Parent Profile" }, "nodes": { @@ -23607,7 +23607,7 @@ }, "system_mac_address": { "type": "string", - "description": "Set to the same MAC address as available in \"show version\" on the device.\n\"system_mac_address\" can also be set under node type settings.\nIf both are set, the value under node type settings takes precedence.", + "description": "Set to the same MAC address as available in \"show version\" on the device.\n\"system_mac_address\" can also be set under node type settings.\nIf both are set, the value under node type settings takes precedence.\n", "title": "System MAC Address" }, "terminattr_disable_aaa": { @@ -23696,7 +23696,7 @@ }, "type": { "type": "string", - "description": "The `type:` variable needs to be defined for each device in the fabric.\nThis is leveraged to load the appropriate template to generate the configuration.", + "description": "The `type:` variable needs to be defined for each device in the fabric.\nThis is leveraged to load the appropriate template to generate the configuration.\n", "title": "Type" }, "underlay_filter_peer_as": { @@ -23803,7 +23803,7 @@ }, "access_list_name": { "type": "string", - "description": "Name of standard Access-List.", + "description": "Name of standard Access-List.\n", "title": "Access List Name" } }, @@ -24389,14 +24389,13 @@ "title": "Path Groups" } }, - "required": [ - "id", - "application_profile" - ], "additionalProperties": false, "patternProperties": { "^_.+$": {} - } + }, + "required": [ + "application_profile" + ] }, "title": "Application Virtual Topologies" }, diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.pickle b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.pickle new file mode 100644 index 00000000000..ecfdc9c2523 Binary files /dev/null and b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.pickle differ diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml index 4d1f6fbda08..2643e817714 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml +++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml @@ -1,4 +1,4 @@ -# Copyright (c) 2023-2024 Arista Networks, Inc. +# Copyright (c) 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. $id: eos_designs @@ -43,7 +43,9 @@ keys: "debug" will produce hidden debug messages viewable with -v. - "quiet" will not produce any messages' + "quiet" will not produce any messages + + ' avd_data_validation_mode: documentation_options: table: role-input-validation @@ -70,7 +72,9 @@ keys: "info" will produce regular log messages. - "debug" will produce hidden debug messages viewable with -v.' + "debug" will produce hidden debug messages viewable with -v. + + ' bfd_multihop: documentation_options: table: bfd-settings @@ -181,7 +185,9 @@ keys: description: 'Configure an iBGP full mesh between PEs, either because there is no RR used or other reasons. - Only supported in combination with MPLS overlay.' + Only supported in combination with MPLS overlay. + + ' bgp_peer_groups: documentation_options: table: bgp-settings @@ -633,7 +639,9 @@ keys: description: 'IPv4 address or DNS name for CloudVision. This variable only supports an on-premise single-node cluster or the DNS name - of a CloudVision as a Service instance.' + of a CloudVision as a Service instance. + + ' cvp_instance_ips: documentation_options: table: cloudvision-settings @@ -1056,7 +1064,9 @@ keys: keys: raw_eos_cli: type: str - description: EOS cli commands rendered on router_bgp.vlans-aware-bundle. + description: 'EOS cli commands rendered on router_bgp.vlans-aware-bundle. + + ' fabric_evpn_encapsulation: documentation_options: table: evpn-settings @@ -1248,7 +1258,9 @@ keys: format: ipv6 description: 'OOB Management interface gateway in IPv6 format. - Used as next-hop for default gateway or static routes defined under ''ipv6_mgmt_destination_networks''.' + Used as next-hop for default gateway or static routes defined under ''ipv6_mgmt_destination_networks''. + + ' is_deployed: documentation_options: table: is-deployed @@ -1285,8 +1297,10 @@ keys: - level-1 - level-2 default: level-2 - description: These fabric level parameters can be used with core_interfaces running + description: 'These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden on link profile or link level. + + ' isis_default_is_type: display_name: ISIS Default IS Type documentation_options: @@ -1304,8 +1318,10 @@ keys: convert_types: - str default: 50 - description: These fabric level parameters can be used with core_interfaces running + description: 'These fabric level parameters can be used with core_interfaces running ISIS, and may be overridden at link profile or link level. + + ' isis_maximum_paths: documentation_options: table: isis-settings @@ -1416,7 +1432,9 @@ keys: type: str description: 'OOB Management interface gateway in IPv4 format. - Used as next-hop for default gateway or static routes defined under ''mgmt_destination_networks''.' + Used as next-hop for default gateway or static routes defined under ''mgmt_destination_networks''. + + ' mgmt_interface: documentation_options: table: management-interface-settings @@ -1943,7 +1961,9 @@ keys: type: list items: type: str - description: '''inventory_hostname'' of CVX server' + description: '''inventory_hostname'' of CVX server + + ' overlay_her_flood_list_per_vni: documentation_options: table: overlay-settings @@ -2116,7 +2136,9 @@ keys: These methods can be overridden per VLAN if either ''rd_override'', ''rt_override'' - or ''vni_override'' is set (preferred in this order).' + or ''vni_override'' is set (preferred in this order). + + ' overlay_routing_protocol: documentation_options: table: overlay-settings @@ -2259,7 +2281,9 @@ keys: These methods can be overridden per VLAN if either ''rt_override'' or ''vni_override'' - is set (preferred in this order).' + is set (preferred in this order). + + ' p2p_uplinks_mtu: documentation_options: table: fabric-settings @@ -2557,7 +2581,9 @@ keys: description: 'Parent profile is optional. Port_profiles can refer to another port_profile to inherit settings in - up to two levels (adapter->profile->parent_profile).' + up to two levels (adapter->profile->parent_profile). + + ' ptp: documentation_options: table: ptp @@ -2662,7 +2688,9 @@ keys: description: 'If True, `eos_designs` will configure `queue-monitor length notifying` according to the - `platform_settings.[].feature_support.queue_monitor_length_notify` setting.' + `platform_settings.[].feature_support.queue_monitor_length_notify` setting. + + ' redundancy: documentation_options: table: system-settings @@ -2725,7 +2753,9 @@ keys: role interface tests. - Again, this is only an issue if `eos_config_deploy_cvp` is used and the devices - are not present in the network.' + are not present in the network. + + ' snmp_settings: documentation_options: table: management-snmp-settings @@ -3054,7 +3084,9 @@ keys: description: 'Parent SVI profile name to apply. svi_profiles can refer to another svi_profile to inherit settings in up - to two levels (svi -> svi_profile -> svi_parent_profile).' + to two levels (svi -> svi_profile -> svi_parent_profile). + + ' system_mac_address: documentation_options: table: system-settings @@ -3064,7 +3096,9 @@ keys: "system_mac_address" can also be set under node type settings. - If both are set, the value under node type settings takes precedence.' + If both are set, the value under node type settings takes precedence. + + ' terminattr_disable_aaa: documentation_options: table: cloudvision-settings @@ -3139,7 +3173,9 @@ keys: description: 'The `type:` variable needs to be defined for each device in the fabric. - This is leveraged to load the appropriate template to generate the configuration.' + This is leveraged to load the appropriate template to generate the configuration. + + ' underlay_filter_peer_as: documentation_options: table: fabric-settings @@ -3296,7 +3332,9 @@ keys: type: str convert_types: - int - description: Name of standard Access-List. + description: 'Name of standard Access-List. + + ' underlay_ospf_area: documentation_options: table: ospf-settings @@ -3651,6 +3689,7 @@ keys: id: type: int $ref: eos_cli_config_gen#keys/router_adaptive_virtual_topology/keys/vrfs/items/keys/profiles/items/keys/id + required: false min: 2 max: 253 description: 'ID of the AVT in each VRFs. ID must be unique across diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/wan_virtual_topologies.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/wan_virtual_topologies.schema.yml index 154b715f73e..8f7557ed9f7 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/wan_virtual_topologies.schema.yml +++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/wan_virtual_topologies.schema.yml @@ -97,6 +97,7 @@ keys: id: type: int $ref: "eos_cli_config_gen#keys/router_adaptive_virtual_topology/keys/vrfs/items/keys/profiles/items/keys/id" + required: false min: 2 max: 253 description: |- diff --git a/ansible_collections/arista/avd/roles/eos_designs/tasks/build-schemas.yml b/ansible_collections/arista/avd/roles/eos_designs/tasks/build-schemas.yml deleted file mode 100644 index f366dbfd303..00000000000 --- a/ansible_collections/arista/avd/roles/eos_designs/tasks/build-schemas.yml +++ /dev/null @@ -1,38 +0,0 @@ -# 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. ---- -- name: Create required output directories - tags: [eos_designs] - delegate_to: localhost - run_once: true - block: - - name: "Create {{ role_schema_dir }}" - ansible.builtin.file: - path: "{{ role_schema_dir }}" - state: directory - mode: 0775 - - name: "Create {{ role_schema_fragments_dir }}" - ansible.builtin.file: - path: "{{ role_schema_fragments_dir }}" - state: directory - mode: 0775 - -- name: Gather AVD Schema Fragments for eos_designs - tags: [eos_designs] - run_once: true - ansible.builtin.copy: - content: "{{ license_header ~ query('ansible.builtin.file', *schema_files) | map('from_yaml') | ansible.builtin.combine(recursive=True) | to_nice_yaml(indent=2, sort_keys=false) }}" - dest: "{{ role_schema_path }}" - mode: 0664 - vars: - license_header: "{{ '# ' ~ (lookup('ansible.builtin.file', role_path ~ '/../../../../../development/license-short.txt') | replace('\n', '\n# ')) ~ '\n' }}" - schema_files: "{{ query('ansible.builtin.fileglob', role_schema_fragments_glob) | arista.avd.natural_sort }}" - -- name: Convert AVD Schema to JSON Schema - tags: [eos_designs] - run_once: true - ansible.builtin.copy: - content: "{{ role_name | arista.avd.convert_schema(type='jsonschema') | to_nice_json(indent=2, sort_keys=false) }}" - dest: "{{ role_schema_json_schema_path }}" - mode: 0664 diff --git a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/test_avdschema.py b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/test_avdschema.py index 86fe988640f..efea62d76ad 100644 --- a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/test_avdschema.py +++ b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/test_avdschema.py @@ -186,7 +186,12 @@ def test_avd_schema_subschema_with_ref_to_store_schemas(self): continue test_schema["keys"][id] = {"type": "dict", "$ref": f"{id}#/"} + # For performance reasons $ref is no longer supported at runtime. + # The $ref must be resolved before loading the schema. avdschema = AvdSchema(test_schema) + resolved_test_schema = avdschema.resolved_schema + + avdschema = AvdSchema(resolved_test_schema) for id in DEFAULT_SCHEMAS: if id == "avd_meta_schema": continue diff --git a/development/license-short.txt b/development/license-short.txt index ffd78a01773..7ff12728292 100644 --- a/development/license-short.txt +++ b/development/license-short.txt @@ -1,3 +1,3 @@ -Copyright (c) 2023-2024 Arista Networks, Inc. +Copyright (c) 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. diff --git a/python-avd/Makefile b/python-avd/Makefile index adb8522aa25..de090f159d6 100644 --- a/python-avd/Makefile +++ b/python-avd/Makefile @@ -55,12 +55,14 @@ copy-libs: ## Copy files from Ansible AVD collection cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/plugins/filter $(J2_DIR) cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/plugins/test $(J2_DIR) cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/* $(EOS_CLI_CONFIG_GEN_TEMPLATE_DIR) - cp $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml $(SCHEMAS_DIR)/ + cp $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.pickle $(SCHEMAS_DIR)/ rm -f $(EOS_CLI_CONFIG_GEN_TEMPLATE_DIR)/avd_schema_documentation.j2 cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_designs/python_modules/* $(EOS_DESIGNS_MODULES_DIR)/ mv $(VENDOR_DIR)/eos_designs_* $(EOS_DESIGNS_MODULES_DIR)/ - cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml $(SCHEMAS_DIR)/ + cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.pickle $(SCHEMAS_DIR)/ + + cp -r $(ANSIBLE_AVD_DIR)/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.pickle $(SCHEMAS_DIR)/ .PHONY: fix-libs fix-libs: ## Fix/remove various Ansible specifics things from python files @@ -83,7 +85,6 @@ fix-libs: ## Fix/remove various Ansible specifics things from python files cp -r $(CURRENT_DIR)/vendor_overrides/* $(VENDOR_DIR)/ - $(SCRIPTS_DIR)/compile_schemas.py $(SCRIPTS_DIR)/compile_templates.py .PHONY: copy-test-data diff --git a/python-avd/pyavd/schema/constants.py b/python-avd/pyavd/schema/constants.py index 7dae32de624..8687faaadd4 100644 --- a/python-avd/pyavd/schema/constants.py +++ b/python-avd/pyavd/schema/constants.py @@ -3,26 +3,39 @@ # that can be found in the LICENSE file. from pathlib import Path -from yaml import safe_load - REPO_ROOT = Path(__file__).parents[3] -EOS_DESIGNS_SCHEMA_PATH = REPO_ROOT.joinpath("ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.schema.yml") -EOS_CLI_CONFIG_GEN_SCHEMA_PATH = REPO_ROOT.joinpath("ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml") - -with open(EOS_CLI_CONFIG_GEN_SCHEMA_PATH, encoding="UTF-8") as file: - EOS_CLI_CONFIG_GEN_SCHEMA = safe_load(file) +EOS_DESIGNS_SCHEMA_DIR = REPO_ROOT.joinpath("ansible_collections/arista/avd/roles/eos_designs/schemas") +EOS_DESIGNS_SCHEMA_PATH = EOS_DESIGNS_SCHEMA_DIR.joinpath("eos_designs.schema.yml") +EOS_DESIGNS_FRAGMENTS_PATH = EOS_DESIGNS_SCHEMA_DIR.joinpath("schema_fragments") +EOS_DESIGNS_PICKLED_SCHEMA_PATH = EOS_DESIGNS_SCHEMA_DIR.joinpath("eos_designs.schema.pickle") +EOS_DESIGNS_JSONSCHEMA_PATH = EOS_DESIGNS_SCHEMA_DIR.joinpath("eos_designs.jsonschema.json") -with open(EOS_DESIGNS_SCHEMA_PATH, encoding="UTF-8") as file: - EOS_DESIGNS_SCHEMA = safe_load(file) +EOS_CLI_CONFIG_GEN_SCHEMA_DIR = REPO_ROOT.joinpath("ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas") +EOS_CLI_CONFIG_GEN_SCHEMA_PATH = EOS_CLI_CONFIG_GEN_SCHEMA_DIR.joinpath("eos_cli_config_gen.schema.yml") +EOS_CLI_CONFIG_GEN_FRAGMENTS_PATH = EOS_CLI_CONFIG_GEN_SCHEMA_DIR.joinpath("schema_fragments") +EOS_CLI_CONFIG_GEN_PICKLED_SCHEMA_PATH = EOS_CLI_CONFIG_GEN_SCHEMA_DIR.joinpath("eos_cli_config_gen.schema.pickle") +EOS_CLI_CONFIG_GEN_JSONSCHEMA_PATH = EOS_CLI_CONFIG_GEN_SCHEMA_DIR.joinpath("eos_cli_config_gen.jsonschema.json") -STORE = { - "eos_cli_config_gen": EOS_CLI_CONFIG_GEN_SCHEMA, - "eos_designs": EOS_DESIGNS_SCHEMA, -} +METASCHEMA_DIR = REPO_ROOT.joinpath("ansible_collections/arista/avd/plugins/plugin_utils/schema") +METASCHEMA_PATH = METASCHEMA_DIR.joinpath("avd_meta_schema.json") +METASCHEMA_PICKLED_SCHEMA_PATH = METASCHEMA_DIR.joinpath("avd_meta_schema.pickle") SCHEMA_PATHS = { + "avd_meta_schema": METASCHEMA_PATH, "eos_cli_config_gen": EOS_CLI_CONFIG_GEN_SCHEMA_PATH, "eos_designs": EOS_DESIGNS_SCHEMA_PATH, } - +SCHEMA_FRAGMENTS_PATHS = { + "eos_cli_config_gen": EOS_CLI_CONFIG_GEN_FRAGMENTS_PATH, + "eos_designs": EOS_DESIGNS_FRAGMENTS_PATH, +} +PICKLED_SCHEMAS = { + "avd_meta_schema": METASCHEMA_PICKLED_SCHEMA_PATH, + "eos_cli_config_gen": EOS_CLI_CONFIG_GEN_PICKLED_SCHEMA_PATH, + "eos_designs": EOS_DESIGNS_PICKLED_SCHEMA_PATH, +} +JSONSCHEMA_PATHS = { + "eos_cli_config_gen": EOS_CLI_CONFIG_GEN_JSONSCHEMA_PATH, + "eos_designs": EOS_DESIGNS_JSONSCHEMA_PATH, +} LICENSE_HEADER = REPO_ROOT.joinpath("development/license-short.txt").read_text(encoding="UTF-8").strip() diff --git a/python-avd/pyavd/schema/metaschema/resolvemodel.py b/python-avd/pyavd/schema/metaschema/resolvemodel.py index 31ee71ed84d..8311ac70c1f 100644 --- a/python-avd/pyavd/schema/metaschema/resolvemodel.py +++ b/python-avd/pyavd/schema/metaschema/resolvemodel.py @@ -8,7 +8,7 @@ from deepmerge import conservative_merger -from ..constants import STORE +from ..store import create_store def merge_schema_from_ref(schema: dict) -> dict: @@ -43,14 +43,16 @@ def get_schema_from_ref(ref: str) -> dict: The ref is in the style "schema_name#/path/to/schema/element" """ + schema_store = create_store() + if "#" not in ref: raise ValueError("Missing # in ref") schema_name, ref = ref.split("#", maxsplit=1) - if schema_name not in STORE: + if schema_name not in schema_store: raise KeyError(f"Invalid schema name '{schema_name}'") - schema = STORE[schema_name] + schema = schema_store[schema_name] path = ref.split("/") ref_schema = walk_schema(schema, path) if ref_schema is None: diff --git a/python-avd/pyavd/schema/store.py b/python-avd/pyavd/schema/store.py new file mode 100644 index 00000000000..9ba0542878b --- /dev/null +++ b/python-avd/pyavd/schema/store.py @@ -0,0 +1,29 @@ +# 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. +from functools import lru_cache +from pickle import load + +from yaml import safe_load + +from .constants import PICKLED_SCHEMAS, SCHEMA_PATHS + + +@lru_cache +def create_store(load_from_yaml=False) -> dict[str, dict]: + store = {} + + # Load from YAML if set. This is used by the tool that creates the pickle. + if load_from_yaml: + for id, schema_file in SCHEMA_PATHS.items(): + with open(schema_file, "r", encoding="UTF-8") as file: + schema_file_data = safe_load(file.read()) + store[id] = schema_file_data + + # Load from Pickle + else: + for id, schema_file in PICKLED_SCHEMAS.items(): + with open(schema_file, "rb") as file: + store[id] = load(file) + + return store diff --git a/python-avd/scripts/build-schema-tables.py b/python-avd/scripts/build-schema-tables.py deleted file mode 100755 index e05f2086fe0..00000000000 --- a/python-avd/scripts/build-schema-tables.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python3 -# 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. -from pathlib import Path -from sys import path - -# Override global path to load schema from source instead of any installed version. -# Avoids to load from pyavd to avoid relying on pyavd vendor things being generated. -path.insert(0, str(Path(__file__).parents[1].joinpath("pyavd"))) - -from schema.constants import SCHEMA_PATHS, STORE -from schema.generate_docs.mdtabsgen import get_md_tabs -from schema.metaschema.meta_schema_model import AristaAvdSchema - -for schema_name, schema_path in SCHEMA_PATHS.items(): - if schema_name not in STORE: - raise KeyError(f"Invalid schema name '{schema_name}'") - - schema = AristaAvdSchema(**STORE[schema_name]) - table_names = sorted(schema._descendant_tables) - output_dir = schema_path.parents[1].joinpath("docs/tables") - for table_name in table_names: - print(f"Building table: {table_name} from schema {schema_name}") - table_file = output_dir.joinpath(f"{table_name}.md") - with open(table_file, mode="w", encoding="UTF-8") as file: - file.write(get_md_tabs(schema, table_name)) - - # Clean up other markdown files not covered by the tables. - remove_files = [file for file in output_dir.glob("*.md") if file.is_file() and file.name.removesuffix(".md") not in table_names] - for file in remove_files: - print(f"Deleting file {file.absolute()}") - file.unlink() diff --git a/python-avd/scripts/build-schemas.py b/python-avd/scripts/build-schemas.py new file mode 100755 index 00000000000..aa40c46ed0b --- /dev/null +++ b/python-avd/scripts/build-schemas.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +# 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. +from json import dump as json_dump +from pathlib import Path +from pickle import HIGHEST_PROTOCOL +from pickle import dump as pickle_dump +from sys import path +from textwrap import indent + +from deepmerge import always_merger +from yaml import CSafeDumper, CSafeLoader +from yaml import dump as yaml_dump +from yaml import load as yaml_load + +# Override global path to load schema from source instead of any installed version. +# Avoids to load from pyavd to avoid relying on pyavd vendor things being generated. +path.insert(0, str(Path(__file__).parents[1].joinpath("pyavd"))) + +from schema.constants import JSONSCHEMA_PATHS, LICENSE_HEADER, PICKLED_SCHEMAS, REPO_ROOT, SCHEMA_FRAGMENTS_PATHS, SCHEMA_PATHS +from schema.generate_docs.mdtabsgen import get_md_tabs +from schema.metaschema.meta_schema_model import AristaAvdSchema + +path.insert(0, str(REPO_ROOT)) + +from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdschema import AvdSchema +from ansible_collections.arista.avd.plugins.plugin_utils.schema.avdtojsonschemaconverter import AvdToJsonSchemaConverter + +FRAGMENTS_PATTERN = "*.schema.yml" + + +def combine_schemas(): + """ + Combine all schema fragments into a single YAML file. + """ + for schema_name, fragments_path in SCHEMA_FRAGMENTS_PATHS.items(): + print("Combining fragments", fragments_path) + if schema_name not in SCHEMA_PATHS: + raise KeyError(f"Invalid schema name '{schema_name}'") + + schema = {} + for fragment_filename in sorted(fragments_path.glob(FRAGMENTS_PATTERN)): + # print("Combining fragment", fragment_filename) + with fragment_filename.open(mode="r", encoding="UTF-8") as fragment_stream: + schema = always_merger.merge(schema, yaml_load(fragment_stream, Loader=CSafeLoader)) + + with SCHEMA_PATHS[schema_name].open(mode="w", encoding="UTF-8") as schema_stream: + schema_stream.write(indent(LICENSE_HEADER, prefix="# ") + "\n") + schema_stream.write(yaml_dump(schema, Dumper=CSafeDumper, sort_keys=False)) + + +def compile_schemas() -> dict: + """ + Load schemas from yaml files, + create a temporary "store", + resolve all $refs and save the resulting schemas as pickles + """ + resolved_schema_store = {} + + # We rely on eos_cli_config_gen being before eos_designs, + # so anything in eos_cli_config_gen can be resolved and $def popped before resolving from eos_designs. + for schema_name, pickle_file in PICKLED_SCHEMAS.items(): + if schema_name == "avd_meta_schema": + resolved_schema = AvdSchema(load_store_from_yaml=True).store["avd_meta_schema"] + else: + print("Resolving schema", schema_name) + avdschema = AvdSchema(schema_id=schema_name, load_store_from_yaml=True) + + # Copying so we can pop below. + resolved_schema = avdschema.resolved_schema.copy() + + # Since the schema is now fully resolved we can drop the $defs. + resolved_schema.pop("$defs", None) + + # Inplace update the schema store with the resolved variant without $def. + avdschema.store[schema_name] = resolved_schema + + print("Saving pickled schema", schema_name) + with open(pickle_file, "wb") as pickle_stream: + pickle_dump(resolved_schema, pickle_stream, HIGHEST_PROTOCOL) + + resolved_schema_store[schema_name] = resolved_schema + + return resolved_schema_store + + +def convert_to_jsonschema(schema_store): + for schema_name, jsonschema_file in JSONSCHEMA_PATHS.items(): + print("Converting JSON schema", schema_name) + if schema_name not in schema_store: + raise KeyError(f"Invalid schema name '{schema_name}'") + + with jsonschema_file.open(mode="w", encoding="UTF-8") as file_stream: + json_dump(AvdToJsonSchemaConverter().convert_schema(schema_store[schema_name]), file_stream, sort_keys=False, indent=2) + + +def build_schema_tables(schema_store): + for schema_name, schema_path in SCHEMA_PATHS.items(): + if schema_name not in SCHEMA_FRAGMENTS_PATHS: + continue + + schema = AristaAvdSchema(**schema_store[schema_name]) + table_names = sorted(schema._descendant_tables) + output_dir = schema_path.parents[1].joinpath("docs/tables") + for table_name in table_names: + print(f"Building table: {table_name} from schema {schema_name}") + table_file = output_dir.joinpath(f"{table_name}.md") + with open(table_file, mode="w", encoding="UTF-8") as file: + file.write(get_md_tabs(schema, table_name)) + + # Clean up other markdown files not covered by the tables. + remove_files = [file for file in output_dir.glob("*.md") if file.is_file() and file.name.removesuffix(".md") not in table_names] + for file in remove_files: + print(f"Deleting file {file.absolute()}") + file.unlink() + + +def main(): + combine_schemas() + schema_store = compile_schemas() + convert_to_jsonschema(schema_store) + build_schema_tables(schema_store) + + +if __name__ == "__main__": + main() diff --git a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md index cc8ee7378f1..7144b930c84 100644 --- a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md +++ b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md @@ -1,5 +1,5 @@ diff --git a/python-avd/tests/schema/conftest.py b/python-avd/tests/schema/conftest.py index 356355770f1..d84eca3034f 100644 --- a/python-avd/tests/schema/conftest.py +++ b/python-avd/tests/schema/conftest.py @@ -11,8 +11,6 @@ # Avoids to load from pyavd to avoid relying on pyavd vendor things being generated. path.insert(0, str(Path(__file__).parents[2].joinpath("pyavd"))) -import schema.constants - ARTIFACTS_PATH = Path(__file__).parent.joinpath("artifacts") EOS_DESIGNS_SCHEMA_PATH = ARTIFACTS_PATH.joinpath("eos_designs.schema.yml") EOS_CLI_CONFIG_GEN_SCHEMA_PATH = ARTIFACTS_PATH.joinpath("eos_cli_config_gen.schema.yml") @@ -23,13 +21,6 @@ test_eos_cli_config_gen_schema = safe_load(file) with open(EOS_DESIGNS_SCHEMA_PATH, encoding="UTF-8") as file: test_eos_designs_schema = safe_load(file) -STORE = { - "eos_cli_config_gen": test_eos_cli_config_gen_schema, - "eos_designs": test_eos_designs_schema, -} - -# Overriding schema store directly in the loaded module (cached so imports inside the code will also get this) -schema.constants.STORE = STORE @pytest.fixture(scope="module") @@ -51,7 +42,10 @@ def schema_store() -> dict[str, dict]: "eos_designs": dict } """ - return STORE + return { + "eos_cli_config_gen": test_eos_cli_config_gen_schema, + "eos_designs": test_eos_designs_schema, + } @pytest.fixture(scope="module") diff --git a/python-avd/tests/schema/generate_docs/test_mdtabsgen.py b/python-avd/tests/schema/generate_docs/test_mdtabsgen.py index 0f745e867d5..4f09225a70f 100644 --- a/python-avd/tests/schema/generate_docs/test_mdtabsgen.py +++ b/python-avd/tests/schema/generate_docs/test_mdtabsgen.py @@ -3,6 +3,7 @@ # that can be found in the LICENSE file. from pathlib import Path from sys import path +from unittest.mock import patch import pytest @@ -26,8 +27,13 @@ def test_get_md_tabs(table_name: str, schema_store, artifacts_path, output_path) output_file = output_path.joinpath(f"{table_name}.md") expected_file = artifacts_path.joinpath(f"expected-{table_name}.md") - schema = AristaAvdSchema(resolve_schema=True, **raw_schema) - md_tabs = get_md_tabs(schema, table_name) + def mocked_create_store(): + return schema_store + + with patch("schema.metaschema.resolvemodel.create_store", new=mocked_create_store): + schema = AristaAvdSchema(resolve_schema=True, **raw_schema) + md_tabs = get_md_tabs(schema, table_name) + with open(output_file, mode="w", encoding="UTF-8") as file: file.write(md_tabs) with open(expected_file, mode="r", encoding="UTF-8") as file: diff --git a/python-avd/tests/schema/metaschema/test_meta_schema_model.py b/python-avd/tests/schema/metaschema/test_meta_schema_model.py index ce45406c862..8960caff2c7 100644 --- a/python-avd/tests/schema/metaschema/test_meta_schema_model.py +++ b/python-avd/tests/schema/metaschema/test_meta_schema_model.py @@ -11,8 +11,8 @@ # Avoids to load from pyavd to avoid relying on pyavd vendor things being generated. path.insert(0, str(Path(__file__).parents[3].joinpath("pyavd"))) -from schema.constants import STORE from schema.metaschema.meta_schema_model import AristaAvdSchema +from schema.store import create_store class NoAliasDumper(yaml.Dumper): @@ -22,7 +22,7 @@ def ignore_aliases(self, data): return True -raw_schema = STORE["eos_designs"] +raw_schema = create_store()["eos_designs"] def test_pydantic_dump_matches_original_yaml(): diff --git a/python-avd/vendor_overrides/schema/default_schemas.py b/python-avd/vendor_overrides/schema/default_schemas.py index 5805b595498..00a3083b367 100644 --- a/python-avd/vendor_overrides/schema/default_schemas.py +++ b/python-avd/vendor_overrides/schema/default_schemas.py @@ -4,11 +4,6 @@ from pathlib import Path pyavd_dir = Path(__file__).parents[2] -DEFAULT_SCHEMAS = { - "avd_meta_schema": pyavd_dir.joinpath("vendor", "schema", "avd_meta_schema.json"), - "eos_cli_config_gen": pyavd_dir.joinpath("vendor", "schemas", "eos_cli_config_gen.schema.yml"), - "eos_designs": pyavd_dir.joinpath("vendor", "schemas", "eos_designs.schema.yml"), -} DEFAULT_PICKLED_SCHEMAS = { "avd_meta_schema": pyavd_dir.joinpath("vendor", "schemas", "avd_meta_schema.pickle"), diff --git a/python-avd/vendor_overrides/schema/store.py b/python-avd/vendor_overrides/schema/store.py index f9706e30553..57f02cee92f 100644 --- a/python-avd/vendor_overrides/schema/store.py +++ b/python-avd/vendor_overrides/schema/store.py @@ -8,7 +8,9 @@ @lru_cache -def create_store(): +def create_store(load_from_yaml=False): + if load_from_yaml: + raise NotImplementedError("'load_from_yaml' not supported for create_store under PyAVD") store = {} for id, schema_file in DEFAULT_PICKLED_SCHEMAS.items(): with open(schema_file, "rb") as file: