diff --git a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/invalid-schema.yml b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/invalid-schema.yml
index 70f9b391d1d..c520ff9f573 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/invalid-schema.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_negative_unit_tests/inventory/host_vars/invalid-schema.yml
@@ -12,4 +12,4 @@ l3leaf:
id: 1
expected_error_message: >-
- 1 errors raised during conversion of input vars. 3 errors found during schema validation of input vars.
+ 1 errors raised during conversion of input vars. 2 errors found during schema validation of input vars.
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.json b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.json
index 61887a7e774..7fdeae4a2af 100644
--- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.json
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avd_meta_schema.json
@@ -265,7 +265,7 @@
"required": { "$ref": "#/$defs/required" },
"deprecation": { "$ref": "#/$defs/deprecation" },
"$ref": { "$ref": "#/$defs/$ref" },
- "documentation_options": { "$ref": "#/$defs/documentation_options" },
+ "documentation_options": { "$ref": "#/$defs/documentation_options_dict" },
"$schema": { "type": "string" },
"$id": { "type": "string" },
"$defs": { "$ref": "#/$defs/$defs" }
@@ -315,6 +315,18 @@
},
"additionalProperties": false
},
+ "documentation_options_dict": {
+ "type": "object",
+ "description": "Special options used for generating documentation",
+ "properties": {
+ "table": { "$ref": "#/$defs/documentation_options/properties/table" },
+ "hide_keys": {
+ "type": "boolean",
+ "description": "Prevent keys of the dict from being displayed in the generated documentation.\nThis is used for structured_config where we wish to avoid displaying the full eos_cli_config_gen schema everywhere."
+ }
+ },
+ "additionalProperties": false
+ },
"$defs": {
"type": "object",
"description": "Storage for reusable schema fragments",
diff --git a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtodocumentationschemaconverter.py b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtodocumentationschemaconverter.py
index 8684fe4aadd..9cc60a75a7d 100644
--- a/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtodocumentationschemaconverter.py
+++ b/ansible_collections/arista/avd/plugins/plugin_utils/schema/avdtodocumentationschemaconverter.py
@@ -134,13 +134,28 @@ def build_table(self, table: str, schema: dict):
if table not in self._get_tables(childschema):
# Skip key if none of the underlying keys have the relevant table
continue
- built_table["table"].extend(self.build_table_row(var_name=key, schema=childschema, indentation=0, var_path=[], table=table))
+ built_table["table"].extend(
+ self.build_table_row(
+ var_name=key,
+ schema=childschema,
+ indentation=0,
+ var_path=[],
+ table=table,
+ )
+ )
built_table["yaml"].extend(self.build_yaml_row(var_name=key, schema=childschema, indentation=0, table=table))
return built_table
def build_table_row(
- self, var_name: str, schema: dict, indentation: int, var_path: list, table: str, parent_schema: dict = None, first_list_item_key: bool = False
+ self,
+ var_name: str,
+ schema: dict,
+ indentation: int,
+ var_path: list,
+ table: str,
+ parent_schema: dict = None,
+ first_list_item_key: bool = False,
):
output = []
@@ -183,7 +198,14 @@ def build_table_row(
return output
- def build_yaml_row(self, var_name: str, schema: dict, indentation: int, table: str, first_list_item_key: bool = False):
+ def build_yaml_row(
+ self,
+ var_name: str,
+ schema: dict,
+ indentation: int,
+ table: str,
+ first_list_item_key: bool = False,
+ ):
output = []
deprecation_label = get_deprecation(schema)[0]
@@ -198,7 +220,7 @@ def build_yaml_row(self, var_name: str, schema: dict, indentation: int, table: s
row = f"{row_indentation}{var_name}:"
var_type = schema.get("type")
- if var_type == "dict" and (schema_keys := self._get_keys(schema)):
+ if var_type == "dict" and (schema_keys := self._get_keys(schema)) and not schema.get("documentation_options", {}).get("hide_keys"):
output.append(row)
for key, childschema in schema_keys.items():
if table not in self._get_tables(childschema):
@@ -287,6 +309,12 @@ def type(self, schema: dict):
def keys(self, schema: dict, indentation: int, var_path: list, table: str):
output = []
+
+ if schema.get("documentation_options", {}).get("hide_keys"):
+ # Skip documenting the keys.
+ # Used for not including all of eos_cli_config_gen for structured_config keys.
+ return output
+
schema_keys = self._get_keys(schema)
for key, childschema in schema_keys.items():
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 c3c058d6477..0515288bc26 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
@@ -547,8 +547,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -559,8 +559,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -829,13 +829,13 @@
"title": "BGP Maintenance Profiles"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "BGP Groups"
},
@@ -1013,8 +1013,8 @@
}
},
"required": [
- "name",
- "action"
+ "action",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -1230,13 +1230,13 @@
"title": "Cvvrf"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Clusters"
},
@@ -1411,8 +1411,8 @@
}
},
"required": [
- "name",
- "exec"
+ "exec",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -2168,13 +2168,13 @@
"title": "VRF"
}
},
- "required": [
- "ip_helper"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "ip_helper"
+ ]
},
"title": "IP Helpers"
},
@@ -2492,13 +2492,13 @@
"title": "No Autoconfig Flag"
}
},
- "required": [
- "ipv6_prefix"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
},
"title": "IPv6 ND Prefixes"
},
@@ -2532,13 +2532,13 @@
"title": "Link Address"
}
},
- "required": [
- "address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "address"
+ ]
},
"title": "IPv6 DHCP Relay Destinations"
},
@@ -2703,13 +2703,13 @@
"title": "Key"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "OSPF Message Digest Keys"
},
@@ -3847,13 +3847,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Ethernet Interfaces"
},
@@ -4141,13 +4141,13 @@
"title": "Serdes"
}
},
- "required": [
- "speed_group"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "speed_group"
+ ]
},
"title": "Speed Groups"
}
@@ -4324,13 +4324,13 @@
"title": "Interface Maintenance Profiles"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
}
},
"interface_profiles": {
@@ -4353,8 +4353,8 @@
}
},
"required": [
- "name",
- "commands"
+ "commands",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -4542,13 +4542,13 @@
"title": "Entries"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
}
},
"ip_access_lists_max_entries": {
@@ -4607,8 +4607,8 @@
}
},
"required": [
- "name",
- "entries"
+ "entries",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -4649,13 +4649,13 @@
"title": "VRF"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Source Interfaces"
}
@@ -4709,8 +4709,8 @@
}
},
"required": [
- "name",
- "entries"
+ "entries",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -4761,8 +4761,8 @@
}
},
"required": [
- "name",
- "entries"
+ "entries",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -4995,13 +4995,13 @@
"title": "Proxy"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "VLANs"
}
@@ -5444,8 +5444,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -5456,8 +5456,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -5541,8 +5541,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -5553,8 +5553,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -5594,8 +5594,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -5606,8 +5606,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -5723,24 +5723,24 @@
"title": "Untagged Forward"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Protocols"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Forwarding Profiles"
}
@@ -5838,13 +5838,13 @@
"title": "Recovery Delay"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Link Tracking Groups"
},
@@ -5990,13 +5990,13 @@
"title": "Shell"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Local Users"
},
@@ -6226,24 +6226,24 @@
"title": "Ports"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Hosts"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
},
@@ -6271,13 +6271,13 @@
"title": "Action"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Match Lists"
}
@@ -6461,13 +6461,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Loopback Interfaces"
},
@@ -6507,13 +6507,13 @@
"title": "Entries"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "MAC Access Lists"
},
@@ -6736,13 +6736,13 @@
"title": "L2 Protocols"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Profiles"
}
@@ -6820,13 +6820,13 @@
"title": "Shutdown"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Interface Profiles"
},
@@ -6856,13 +6856,13 @@
"title": "Initiator"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "BGP Profiles"
},
@@ -6894,13 +6894,13 @@
"title": "On Boot"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Unit Profiles"
},
@@ -6950,13 +6950,13 @@
"title": "Groups"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Units"
}
@@ -7249,13 +7249,13 @@
"title": "IPv6 Access Group"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Enable VRFs"
},
@@ -7487,13 +7487,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Management Interfaces"
},
@@ -7887,13 +7887,13 @@
"title": "Enable"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
},
@@ -8006,8 +8006,8 @@
}
},
"required": [
- "sequence",
- "match_regex"
+ "match_regex",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -8018,8 +8018,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -8741,9 +8741,9 @@
}
},
"required": [
- "id",
"type",
- "endpoint"
+ "endpoint",
+ "id"
],
"additionalProperties": false,
"patternProperties": {
@@ -8753,13 +8753,13 @@
"title": "Connectors"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Patches"
}
@@ -8797,8 +8797,8 @@
}
},
"required": [
- "sequence",
- "match"
+ "match",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -8809,8 +8809,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -10350,13 +10350,13 @@
"title": "No Autoconfig Flag"
}
},
- "required": [
- "ipv6_prefix"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
},
"title": "IPv6 ND Prefixes"
},
@@ -10477,13 +10477,13 @@
"title": "Key"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "OSPF Message Digest Keys"
},
@@ -10570,13 +10570,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Port Channel Interfaces"
},
@@ -10607,8 +10607,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -10618,13 +10618,13 @@
"title": "Sequence Numbers"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Prefix Lists"
},
@@ -11033,13 +11033,13 @@
"title": "Comment"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "TX Queues"
},
@@ -11090,13 +11090,13 @@
"title": "Comment"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "Uc TX Queues"
},
@@ -11147,24 +11147,24 @@
"title": "Comment"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "Mc TX Queues"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "QOS Profiles"
},
@@ -11547,8 +11547,8 @@
}
},
"required": [
- "sequence",
- "type"
+ "type",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -11559,8 +11559,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -15875,13 +15875,13 @@
"title": "Routes"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
}
@@ -16358,8 +16358,8 @@
}
},
"required": [
- "source_prefix",
- "limit"
+ "limit",
+ "source_prefix"
],
"additionalProperties": false,
"patternProperties": {
@@ -16428,13 +16428,13 @@
"title": "Name"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Mesh Groups"
},
@@ -16486,13 +16486,13 @@
"title": "Sa Filter"
}
},
- "required": [
- "ipv4_address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "ipv4_address"
+ ]
},
"title": "Peers"
},
@@ -16547,8 +16547,8 @@
}
},
"required": [
- "source_prefix",
- "limit"
+ "limit",
+ "source_prefix"
],
"additionalProperties": false,
"patternProperties": {
@@ -16617,13 +16617,13 @@
"title": "Name"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Mesh Groups"
},
@@ -16675,24 +16675,24 @@
"title": "Sa Filter"
}
},
- "required": [
- "ipv4_address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "ipv4_address"
+ ]
},
"title": "Peers"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
}
@@ -17435,13 +17435,13 @@
"title": "Override"
}
},
- "required": [
- "address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "address"
+ ]
},
"title": "RP Addresses"
},
@@ -17470,24 +17470,24 @@
"title": "Register Count"
}
},
- "required": [
- "address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "address"
+ ]
},
"title": "Other Anycast RP Addresses"
}
},
- "required": [
- "address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "address"
+ ]
},
"title": "Anycast RPs"
}
@@ -17575,13 +17575,13 @@
"title": "IPv4"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
}
@@ -18193,13 +18193,13 @@
"title": "VRF"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Local Interfaces"
},
@@ -18694,8 +18694,8 @@
}
},
"required": [
- "sequence",
- "action"
+ "action",
+ "sequence"
],
"additionalProperties": false,
"patternProperties": {
@@ -18706,8 +18706,8 @@
}
},
"required": [
- "name",
- "sequence_numbers"
+ "sequence_numbers",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -19128,13 +19128,13 @@
"title": "Source"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Profiles"
}
@@ -19189,8 +19189,8 @@
}
},
"required": [
- "name",
- "interface"
+ "interface",
+ "name"
],
"additionalProperties": false,
"patternProperties": {
@@ -19724,13 +19724,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "Tunnel Interfaces"
},
@@ -20274,13 +20274,13 @@
"title": "Link Address"
}
},
- "required": [
- "address"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "address"
+ ]
},
"title": "IPv6 DHCP Relay Destinations"
},
@@ -20885,13 +20885,13 @@
"title": "EOS CLI"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VLAN Interfaces"
},
@@ -21047,13 +21047,13 @@
"title": "Source Interface"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VMTracer Sessions"
},
@@ -21226,13 +21226,13 @@
"title": "Flood Vteps"
}
},
- "required": [
- "id"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "id"
+ ]
},
"title": "VLANs"
},
@@ -21256,13 +21256,13 @@
"title": "Multicast Group"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "VRFs"
},
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 fe234247cbb..a393efb67b0 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
@@ -320,7 +320,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -335,7 +334,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -517,7 +515,6 @@ keys:
keys:
name:
type: str
- required: true
description: Group Name
vrf:
type: str
@@ -621,7 +618,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
action:
type: str
@@ -723,7 +719,6 @@ keys:
keys:
name:
type: str
- required: true
description: Cluster Name
cvaddrs:
type: list
@@ -990,7 +985,6 @@ keys:
keys:
name:
type: str
- required: true
description: Daemon Name
exec:
type: str
@@ -1176,7 +1170,6 @@ keys:
keys:
name:
type: str
- required: true
description:
type: str
shutdown:
@@ -1465,7 +1458,6 @@ keys:
keys:
ip_helper:
type: str
- required: true
source_interface:
type: str
description: Source interface name
@@ -1475,7 +1467,7 @@ keys:
convert_types:
- int
ip_nat:
- $ref: '#/$defs/interface_ip_nat'
+ $ref: eos_cli_config_gen#/$defs/interface_ip_nat
ipv6_enable:
type: bool
ipv6_address:
@@ -1497,7 +1489,6 @@ keys:
keys:
ipv6_prefix:
type: str
- required: true
valid_lifetime:
type: str
convert_types:
@@ -1519,7 +1510,6 @@ keys:
address:
type: str
description: DHCP server's IPv6 address
- required: true
vrf:
type: str
convert_types:
@@ -1618,7 +1608,6 @@ keys:
type: int
convert_types:
- str
- required: true
hash_algorithm:
type: str
valid_values:
@@ -2487,7 +2476,6 @@ keys:
type: int
convert_types:
- str
- required: true
serdes:
type: str
description: Serdes speed like "10g" or "25g"
@@ -2627,7 +2615,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface-Group name
interfaces:
type: list
@@ -2654,7 +2641,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface-Profile Name
commands:
type: list
@@ -2675,7 +2661,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -2844,7 +2829,6 @@ keys:
keys:
name:
type: str
- required: true
description: IP Community-list Name
entries:
type: list
@@ -2905,7 +2889,6 @@ keys:
keys:
name:
type: str
- required: true
description: 'Source Interface
'
@@ -2925,7 +2908,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
entries:
type: list
@@ -2957,7 +2939,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
entries:
type: list
@@ -3078,7 +3059,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: VLAN ID
enabled:
type: bool
@@ -3380,7 +3360,6 @@ keys:
keys:
name:
type: str
- required: true
description: IPv6 Access-list Name
counters_per_entry:
type: bool
@@ -3395,7 +3374,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -3433,7 +3411,6 @@ keys:
keys:
name:
type: str
- required: true
description: Prefix-list Name
sequence_numbers:
type: list
@@ -3446,7 +3423,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -3466,7 +3442,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -3481,7 +3456,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -3545,7 +3519,6 @@ keys:
keys:
name:
type: str
- required: true
protocols:
type: list
primary_key: name
@@ -3554,7 +3527,6 @@ keys:
keys:
name:
type: str
- required: true
valid_values:
- bfd per-link rfc-7130
- e-lmi
@@ -3609,7 +3581,6 @@ keys:
keys:
name:
type: str
- required: true
links_minimum:
type: int
min: 1
@@ -3680,7 +3651,6 @@ keys:
name:
description: Username
type: str
- required: true
disabled:
type: bool
description: 'If true, the user will be removed and all other settings are
@@ -3889,7 +3859,6 @@ keys:
type: str
convert_types:
- int
- required: true
description: VRF name
source_interface:
type: str
@@ -3904,7 +3873,6 @@ keys:
keys:
name:
type: str
- required: true
description: Syslog server name
protocol:
type: str
@@ -3934,7 +3902,6 @@ keys:
keys:
name:
type: str
- required: true
description: Match list
action:
type: str
@@ -3969,7 +3936,6 @@ keys:
name:
type: str
description: Loopback interface name e.g. "Loopback0"
- required: true
description:
type: str
shutdown:
@@ -4042,7 +4008,6 @@ keys:
keys:
name:
type: str
- required: true
description: MAC Access-list Name
counters_per_entry:
type: bool
@@ -4112,7 +4077,6 @@ keys:
keys:
name:
type: str
- required: true
description: Profile-Name
cipher:
type: str
@@ -4206,7 +4170,6 @@ keys:
keys:
name:
type: str
- required: true
rate_monitoring:
type: dict
keys:
@@ -4244,7 +4207,6 @@ keys:
keys:
name:
type: str
- required: true
description: BGP Profile Name
initiator:
type: dict
@@ -4262,7 +4224,6 @@ keys:
keys:
name:
type: str
- required: true
description: Unit Profile Name
on_boot:
type: dict
@@ -4286,7 +4247,6 @@ keys:
keys:
name:
type: str
- required: true
description: Unit Name
quiesce:
type: bool
@@ -4487,7 +4447,6 @@ keys:
name:
description: VRF Name
type: str
- required: true
convert_types:
- int
access_group:
@@ -4576,7 +4535,6 @@ keys:
keys:
name:
type: str
- required: true
description: Management Interface Name
description:
type: str
@@ -4850,7 +4808,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF Name
convert_types:
- int
@@ -4903,7 +4860,6 @@ keys:
keys:
name:
type: str
- required: true
description: Match-list Name
sequence_numbers:
type: list
@@ -4916,7 +4872,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -5321,7 +5276,6 @@ keys:
keys:
name:
type: str
- required: true
enabled:
type: bool
connectors:
@@ -5340,7 +5294,6 @@ keys:
type: str
convert_types:
- int
- required: true
type:
type: str
valid_values:
@@ -5373,7 +5326,6 @@ keys:
keys:
name:
type: str
- required: true
description: Peer-filter Name
sequence_numbers:
type: list
@@ -5386,7 +5338,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -5573,7 +5524,6 @@ keys:
keys:
name:
type: str
- required: true
description:
type: str
logging:
@@ -6164,7 +6114,7 @@ keys:
type: str
description: IPv4 address/mask
ip_nat:
- $ref: '#/$defs/interface_ip_nat'
+ $ref: eos_cli_config_gen#/$defs/interface_ip_nat
ipv6_enable:
type: bool
ipv6_address:
@@ -6187,7 +6137,6 @@ keys:
keys:
ipv6_prefix:
type: str
- required: true
valid_lifetime:
type: str
convert_types:
@@ -6266,7 +6215,6 @@ keys:
type: int
convert_types:
- str
- required: true
hash_algorithm:
type: str
valid_values:
@@ -6325,7 +6273,6 @@ keys:
keys:
name:
type: str
- required: true
description: Prefix-list Name
sequence_numbers:
type: list
@@ -6337,7 +6284,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -6537,7 +6483,6 @@ keys:
keys:
name:
type: str
- required: true
description: Profile-Name
trust:
type: str
@@ -6584,7 +6529,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: TX-Queue ID
bandwidth_percent:
type: int
@@ -6626,7 +6570,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: UC TX queue ID
bandwidth_percent:
type: int
@@ -6668,7 +6611,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: MC TX queue ID
bandwidth_percent:
type: int
@@ -6886,7 +6828,6 @@ keys:
keys:
name:
type: str
- required: true
description: Route-map Name
sequence_numbers:
type: list
@@ -6899,7 +6840,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -9247,7 +9187,6 @@ keys:
keys:
name:
type: str
- required: true
description: Destination-VRF
convert_types:
- int
@@ -9527,7 +9466,6 @@ keys:
source_prefix:
type: str
description: Source address prefix
- required: true
limit:
type: int
convert_types:
@@ -9544,7 +9482,6 @@ keys:
keys:
ipv4_address:
type: str
- required: true
description: Peer IP Address
default_peer:
type: dict
@@ -9576,7 +9513,6 @@ keys:
keys:
name:
type: str
- required: true
description: Mesh group name
keepalive:
type: dict
@@ -9613,7 +9549,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF name
convert_types:
- int
@@ -9644,7 +9579,6 @@ keys:
source_prefix:
type: str
description: Source address prefix
- required: true
limit:
type: int
convert_types:
@@ -9661,7 +9595,6 @@ keys:
keys:
ipv4_address:
type: str
- required: true
description: Peer IP Address
default_peer:
type: dict
@@ -9693,7 +9626,6 @@ keys:
keys:
name:
type: str
- required: true
description: Mesh group name
keepalive:
type: dict
@@ -10129,7 +10061,6 @@ keys:
keys:
address:
type: str
- required: true
description: RP Address
groups:
type: list
@@ -10161,7 +10092,6 @@ keys:
keys:
address:
type: str
- required: true
description: Anycast RP Address
other_anycast_rp_addresses:
type: list
@@ -10173,7 +10103,6 @@ keys:
keys:
address:
type: str
- required: true
description: Other Anycast RP Address
register_count:
type: int
@@ -10188,7 +10117,6 @@ keys:
name:
type: str
description: VRF Name
- required: true
convert_types:
- int
ipv4:
@@ -10570,7 +10498,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface name
vrf:
type: str
@@ -10887,7 +10814,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -10902,7 +10828,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
@@ -11149,7 +11074,6 @@ keys:
keys:
name:
type: str
- required: true
description: Tcam-Profile Name
config:
type: str
@@ -11186,7 +11110,6 @@ keys:
name:
type: str
description: Name of tracker object
- required: true
interface:
type: str
description: Name of tracked interface
@@ -11429,7 +11352,6 @@ keys:
keys:
name:
type: str
- required: true
description: Tunnel Interface Name
description:
type: str
@@ -11533,7 +11455,6 @@ keys:
keys:
name:
type: str
- required: true
description: VLAN interface name like "Vlan123"
description:
type: str
@@ -11615,7 +11536,7 @@ keys:
convert_types:
- int
ip_nat:
- $ref: '#/$defs/interface_ip_nat'
+ $ref: eos_cli_config_gen#/$defs/interface_ip_nat
ipv6_enable:
type: bool
ipv6_address:
@@ -11696,7 +11617,6 @@ keys:
address:
type: str
description: DHCP server's IPv6 address
- required: true
vrf:
type: str
convert_types:
@@ -12132,7 +12052,6 @@ keys:
keys:
name:
type: str
- required: true
description: Vmtracer Session Name
url:
type: str
@@ -12255,7 +12174,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: VLAN ID
vni:
type: int
@@ -12279,7 +12197,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF Name
convert_types:
- int
@@ -12328,7 +12245,7 @@ $defs:
min: 0
max: 4294967295
static:
- $ref: '#/$defs/interface_ip_nat_static'
+ $ref: eos_cli_config_gen#/$defs/interface_ip_nat_static
source:
type: dict
keys:
@@ -12365,7 +12282,7 @@ $defs:
min: 0
max: 4294967295
static:
- $ref: '#/$defs/interface_ip_nat_static'
+ $ref: eos_cli_config_gen#/$defs/interface_ip_nat_static
interface_ip_nat_static:
type: list
primary_key: original_ip
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/access_lists.schema.yml
index 3dc119f8b92..f126bdb2794 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/access_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -29,7 +28,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/bgp_groups.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/bgp_groups.schema.yml
index 516fa4631ee..7f75141fc21 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/bgp_groups.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/bgp_groups.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Group Name
vrf:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/community_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/community_lists.schema.yml
index 8c2c5555e47..bf9ed5ca457 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/community_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/community_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
action:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemon_terminattr.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemon_terminattr.schema.yml
index bf2c0920802..5ae75760050 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemon_terminattr.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemon_terminattr.schema.yml
@@ -34,7 +34,6 @@ keys:
keys:
name:
type: str
- required: true
description: Cluster Name
cvaddrs:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemons.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemons.schema.yml
index 7394edd123d..2f633fb102b 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemons.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/daemons.schema.yml
@@ -15,7 +15,6 @@ keys:
keys:
name:
type: str
- required: true
description: Daemon Name
exec:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/defs_interface_ip_nat.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/defs_interface_ip_nat.schema.yml
index c1bc220cbf1..ff889b601de 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/defs_interface_ip_nat.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/defs_interface_ip_nat.schema.yml
@@ -29,7 +29,7 @@ $defs:
min: 0
max: 4294967295
static:
- $ref: "#/$defs/interface_ip_nat_static"
+ $ref: "eos_cli_config_gen#/$defs/interface_ip_nat_static"
source:
type: dict
keys:
@@ -63,4 +63,4 @@ $defs:
min: 0
max: 4294967295
static:
- $ref: "#/$defs/interface_ip_nat_static"
+ $ref: "eos_cli_config_gen#/$defs/interface_ip_nat_static"
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ethernet_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ethernet_interfaces.schema.yml
index bdbca806725..32c6d43c281 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ethernet_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ethernet_interfaces.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description:
type: str
shutdown:
@@ -268,7 +267,6 @@ keys:
keys:
ip_helper:
type: str
- required: true
source_interface:
type: str
description: Source interface name
@@ -278,7 +276,7 @@ keys:
convert_types:
- int
ip_nat:
- $ref: "#/$defs/interface_ip_nat"
+ $ref: "eos_cli_config_gen#/$defs/interface_ip_nat"
ipv6_enable:
type: bool
ipv6_address:
@@ -300,7 +298,6 @@ keys:
keys:
ipv6_prefix:
type: str
- required: true
valid_lifetime:
type: str
convert_types:
@@ -322,7 +319,6 @@ keys:
address:
type: str
description: DHCP server's IPv6 address
- required: true
vrf:
type: str
convert_types:
@@ -414,7 +410,6 @@ keys:
type: int
convert_types:
- str
- required: true
hash_algorithm:
type: str
valid_values: ["md5", "sha1", "sha256", "sha384", "sha512"]
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/hardware.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/hardware.schema.yml
index fda6b0aab01..ed94dccc0ce 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/hardware.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/hardware.schema.yml
@@ -24,7 +24,6 @@ keys:
type: int
convert_types:
- str
- required: true
serdes:
type: str
description: Serdes speed like "10g" or "25g"
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_groups.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_groups.schema.yml
index 7cd2dda1b7c..27b4a299abc 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_groups.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_groups.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface-Group name
interfaces:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_profiles.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_profiles.schema.yml
index 16c35562db5..3db307aa519 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_profiles.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/interface_profiles.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface-Profile Name
commands:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_access_lists.schema.yml
index a3958cb5123..17705ac018b 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_access_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_community_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_community_lists.schema.yml
index c1f7ce7fd23..342514a969a 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_community_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_community_lists.schema.yml
@@ -17,7 +17,6 @@ keys:
keys:
name:
type: str
- required: true
description: IP Community-list Name
entries:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_domain_lookup.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_domain_lookup.schema.yml
index 050371c9f72..6d8b3019a8c 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_domain_lookup.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_domain_lookup.schema.yml
@@ -16,7 +16,6 @@ keys:
keys:
name:
type: str
- required: true
description: |
Source Interface
vrf:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists.schema.yml
index 699aa54fd65..6c3300617b7 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists.schema.yml
@@ -15,7 +15,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
entries:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists_regexp.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists_regexp.schema.yml
index 046bd87c472..a50a20d540f 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists_regexp.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_extcommunity_lists_regexp.schema.yml
@@ -15,7 +15,6 @@ keys:
keys:
name:
type: str
- required: true
description: Community-list Name
entries:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_igmp_snooping.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_igmp_snooping.schema.yml
index aad408817b6..826d497fed3 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_igmp_snooping.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ip_igmp_snooping.schema.yml
@@ -74,7 +74,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: VLAN ID
enabled:
type: bool
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_access_lists.schema.yml
index bb79b305c86..c9850af4f0e 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_access_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: IPv6 Access-list Name
counters_per_entry:
type: bool
@@ -29,7 +28,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_prefix_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_prefix_lists.schema.yml
index d3ced3fba4c..ddb58dd43c6 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_prefix_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_prefix_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Prefix-list Name
sequence_numbers:
type: list
@@ -27,7 +26,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_standard_access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_standard_access_lists.schema.yml
index 1cbc392894f..8dd46107a01 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_standard_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/ipv6_standard_access_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -29,7 +28,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/l2_protocol_forwarding.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/l2_protocol_forwarding.schema.yml
index bac3e435a0a..877dc55e9c1 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/l2_protocol_forwarding.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/l2_protocol_forwarding.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
protocols:
type: list
primary_key: name
@@ -23,7 +22,6 @@ keys:
keys:
name:
type: str
- required: true
valid_values: ["bfd per-link rfc-7130", "e-lmi", "isis", "lacp", "lldp", "macsec", "pause", "stp"]
forward:
type: bool
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/link_tracking_groups.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/link_tracking_groups.schema.yml
index d47fda22db6..b044e73d6dd 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/link_tracking_groups.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/link_tracking_groups.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
links_minimum:
type: int
min: 1
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/local_users.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/local_users.schema.yml
index f0186db66c5..d81030c0264 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/local_users.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/local_users.schema.yml
@@ -14,7 +14,6 @@ keys:
name:
description: Username
type: str
- required: true
disabled:
type: bool
description: |
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/logging.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/logging.schema.yml
index d95473649ed..abf1b5f43e6 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/logging.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/logging.schema.yml
@@ -79,7 +79,6 @@ keys:
type: str
convert_types:
- int
- required: true
description: VRF name
source_interface:
type: str
@@ -94,7 +93,6 @@ keys:
keys:
name:
type: str
- required: true
description: Syslog server name
protocol:
type: str
@@ -122,7 +120,6 @@ keys:
keys:
name:
type: str
- required: true
description: Match list
action:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/loopback_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/loopback_interfaces.schema.yml
index 7d06204e590..48fede9076e 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/loopback_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/loopback_interfaces.schema.yml
@@ -14,7 +14,6 @@ keys:
name:
type: str
description: Loopback interface name e.g. "Loopback0"
- required: true
description:
type: str
shutdown:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_access_lists.schema.yml
index a95a4986f15..59ebde65326 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_access_lists.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: MAC Access-list Name
counters_per_entry:
type: bool
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_security.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_security.schema.yml
index 641094bba56..2d58491615d 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_security.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/mac_security.schema.yml
@@ -30,7 +30,6 @@ keys:
keys:
name:
type: str
- required: true
description: Profile-Name
cipher:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/maintenance.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/maintenance.schema.yml
index d505138207b..6189dda192b 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/maintenance.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/maintenance.schema.yml
@@ -30,7 +30,6 @@ keys:
keys:
name:
type: str
- required: true
rate_monitoring:
type: dict
keys:
@@ -65,7 +64,6 @@ keys:
keys:
name:
type: str
- required: true
description: BGP Profile Name
initiator:
type: dict
@@ -83,7 +81,6 @@ keys:
keys:
name:
type: str
- required: true
description: Unit Profile Name
on_boot:
type: dict
@@ -106,7 +103,6 @@ keys:
keys:
name:
type: str
- required: true
description: Unit Name
quiesce:
type: bool
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_api_http.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_api_http.schema.yml
index 9c574e8b341..52783e59651 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_api_http.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_api_http.schema.yml
@@ -27,7 +27,6 @@ keys:
name:
description: VRF Name
type: str
- required: true
convert_types:
- int
access_group:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_interfaces.schema.yml
index 6aed5b9113f..237e542fbc7 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_interfaces.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Management Interface Name
description:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_ssh.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_ssh.schema.yml
index 46a49f10afb..978a699d186 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_ssh.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/management_ssh.schema.yml
@@ -93,7 +93,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF Name
convert_types:
- int
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/match_list_input.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/match_list_input.schema.yml
index 41cbbcc6da2..de9cdce645b 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/match_list_input.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/match_list_input.schema.yml
@@ -17,7 +17,6 @@ keys:
keys:
name:
type: str
- required: true
description: Match-list Name
sequence_numbers:
type: list
@@ -30,7 +29,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/patch_panel.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/patch_panel.schema.yml
index 7a2274e53ea..2bca9bbe5f9 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/patch_panel.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/patch_panel.schema.yml
@@ -16,7 +16,6 @@ keys:
keys:
name:
type: str
- required: true
enabled:
type: bool
connectors:
@@ -34,7 +33,6 @@ keys:
type: str
convert_types:
- int
- required: true
type:
type: str
valid_values:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/peer_filters.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/peer_filters.schema.yml
index 9043caf6830..0b142cf5cf8 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/peer_filters.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/peer_filters.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Peer-filter Name
sequence_numbers:
type: list
@@ -26,7 +25,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/port_channel_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/port_channel_interfaces.schema.yml
index d7c60aef148..c55260f06d9 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/port_channel_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/port_channel_interfaces.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description:
type: str
logging:
@@ -567,7 +566,7 @@ keys:
type: str
description: IPv4 address/mask
ip_nat:
- $ref: "#/$defs/interface_ip_nat"
+ $ref: "eos_cli_config_gen#/$defs/interface_ip_nat"
ipv6_enable:
type: bool
ipv6_address:
@@ -590,7 +589,6 @@ keys:
keys:
ipv6_prefix:
type: str
- required: true
valid_lifetime:
type: str
convert_types:
@@ -669,7 +667,6 @@ keys:
type: int
convert_types:
- str
- required: true
hash_algorithm:
type: str
valid_values:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/prefix_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/prefix_lists.schema.yml
index ff84371e28a..64b397c3dae 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/prefix_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/prefix_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Prefix-list Name
sequence_numbers:
type: list
@@ -26,7 +25,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/qos_profiles.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/qos_profiles.schema.yml
index 9a5be3ecbc4..63b86312d3c 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/qos_profiles.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/qos_profiles.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Profile-Name
trust:
type: str
@@ -55,7 +54,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: TX-Queue ID
bandwidth_percent:
type: int
@@ -92,7 +90,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: UC TX queue ID
bandwidth_percent:
type: int
@@ -129,7 +126,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: MC TX queue ID
bandwidth_percent:
type: int
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/route_maps.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/route_maps.schema.yml
index 654618392c7..4de67088edc 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/route_maps.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/route_maps.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Route-map Name
sequence_numbers:
type: list
@@ -26,7 +25,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_general.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_general.schema.yml
index b382dd478e8..6b9a43e2f47 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_general.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_general.schema.yml
@@ -29,7 +29,6 @@ keys:
keys:
name:
type: str
- required: true
description: Destination-VRF
convert_types:
- int
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_msdp.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_msdp.schema.yml
index d57753c9d13..233e48a7214 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_msdp.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_msdp.schema.yml
@@ -33,7 +33,6 @@ keys:
source_prefix:
type: str
description: Source address prefix
- required: true
limit:
type: int
convert_types:
@@ -50,7 +49,6 @@ keys:
keys:
ipv4_address:
type: str
- required: true
description: Peer IP Address
default_peer:
type: dict
@@ -82,7 +80,6 @@ keys:
keys:
name:
type: str
- required: true
description: Mesh group name
keepalive:
type: dict
@@ -119,7 +116,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF name
convert_types:
- int
@@ -150,7 +146,6 @@ keys:
source_prefix:
type: str
description: Source address prefix
- required: true
limit:
type: int
convert_types:
@@ -167,7 +162,6 @@ keys:
keys:
ipv4_address:
type: str
- required: true
description: Peer IP Address
default_peer:
type: dict
@@ -199,7 +193,6 @@ keys:
keys:
name:
type: str
- required: true
description: Mesh group name
keepalive:
type: dict
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_pim_sparse_mode.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_pim_sparse_mode.schema.yml
index 349e6dd89a7..5a5e9c639cf 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_pim_sparse_mode.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_pim_sparse_mode.schema.yml
@@ -29,7 +29,6 @@ keys:
keys:
address:
type: str
- required: true
description: RP Address
groups:
type: list
@@ -61,7 +60,6 @@ keys:
keys:
address:
type: str
- required: true
description: Anycast RP Address
other_anycast_rp_addresses:
type: list
@@ -73,7 +71,6 @@ keys:
keys:
address:
type: str
- required: true
description: Other Anycast RP Address
register_count:
type: int
@@ -88,7 +85,6 @@ keys:
name:
type: str
description: VRF Name
- required: true
convert_types:
- int
ipv4:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/snmp_server.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/snmp_server.schema.yml
index 39689ebf842..3015e510ff4 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/snmp_server.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/snmp_server.schema.yml
@@ -103,7 +103,6 @@ keys:
keys:
name:
type: str
- required: true
description: Interface name
vrf:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/standard_access_lists.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/standard_access_lists.schema.yml
index 8301d60aa5d..b8d3a1045b5 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/standard_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/standard_access_lists.schema.yml
@@ -14,7 +14,6 @@ keys:
keys:
name:
type: str
- required: true
description: Access-list Name
counters_per_entry:
type: bool
@@ -29,7 +28,6 @@ keys:
keys:
sequence:
type: int
- required: true
description: Sequence ID
convert_types:
- str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tcam_profile.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tcam_profile.schema.yml
index 979c18cbe35..6980aab6e9a 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tcam_profile.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tcam_profile.schema.yml
@@ -22,7 +22,6 @@ keys:
keys:
name:
type: str
- required: true
description: Tcam-Profile Name
config:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/trackers.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/trackers.schema.yml
index 922e43c6f95..7eabd3d8405 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/trackers.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/trackers.schema.yml
@@ -12,7 +12,6 @@ keys:
name:
type: str
description: Name of tracker object
- required: true
interface:
type: str
description: Name of tracked interface
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tunnel_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tunnel_interfaces.schema.yml
index 5f9084937f5..a56038b9334 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tunnel_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/tunnel_interfaces.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Tunnel Interface Name
description:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vlan_interfaces.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vlan_interfaces.schema.yml
index 554541a7bae..d6b0210e665 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vlan_interfaces.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vlan_interfaces.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: VLAN interface name like "Vlan123"
description:
type: str
@@ -95,7 +94,7 @@ keys:
convert_types:
- int
ip_nat:
- $ref: "#/$defs/interface_ip_nat"
+ $ref: "eos_cli_config_gen#/$defs/interface_ip_nat"
ipv6_enable:
type: bool
ipv6_address:
@@ -170,7 +169,6 @@ keys:
address:
type: str
description: DHCP server's IPv6 address
- required: true
vrf:
type: str
convert_types:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vmtracer_sessions.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vmtracer_sessions.schema.yml
index 02a61cc2b6e..e1cbfa14616 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vmtracer_sessions.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vmtracer_sessions.schema.yml
@@ -13,7 +13,6 @@ keys:
keys:
name:
type: str
- required: true
description: Vmtracer Session Name
url:
type: str
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vxlan_interface.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vxlan_interface.schema.yml
index 1b5f42d68f0..cca391f6f9a 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vxlan_interface.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/vxlan_interface.schema.yml
@@ -78,7 +78,6 @@ keys:
type: int
convert_types:
- str
- required: true
description: VLAN ID
vni:
type: int
@@ -102,7 +101,6 @@ keys:
keys:
name:
type: str
- required: true
description: VRF Name
convert_types:
- int
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 d7ac4002980..f248ea4c90f 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
@@ -18,37 +18,37 @@
| [ name](## "bgp_peer_groups.ipv4_underlay_peers.name") | String | | `IPv4-UNDERLAY-PEERS` | | Name of peer group. |
| [ password](## "bgp_peer_groups.ipv4_underlay_peers.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.ipv4_underlay_peers.bfd") | Boolean | | `False` | | |
- | [ structured_config](## "bgp_peer_groups.ipv4_underlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.ipv4_underlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ mlag_ipv4_underlay_peer](## "bgp_peer_groups.mlag_ipv4_underlay_peer") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.mlag_ipv4_underlay_peer.name") | String | | `MLAG-IPv4-UNDERLAY-PEER` | | Name of peer group. |
| [ password](## "bgp_peer_groups.mlag_ipv4_underlay_peer.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.mlag_ipv4_underlay_peer.bfd") | Boolean | | `False` | | |
- | [ structured_config](## "bgp_peer_groups.mlag_ipv4_underlay_peer.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.mlag_ipv4_underlay_peer.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ evpn_overlay_peers](## "bgp_peer_groups.evpn_overlay_peers") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.evpn_overlay_peers.name") | String | | `EVPN-OVERLAY-PEERS` | | Name of peer group. |
| [ password](## "bgp_peer_groups.evpn_overlay_peers.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.evpn_overlay_peers.bfd") | Boolean | | `True` | | |
- | [ structured_config](## "bgp_peer_groups.evpn_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.evpn_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ evpn_overlay_core](## "bgp_peer_groups.evpn_overlay_core") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.evpn_overlay_core.name") | String | | `EVPN-OVERLAY-CORE` | | Name of peer group. |
| [ password](## "bgp_peer_groups.evpn_overlay_core.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.evpn_overlay_core.bfd") | Boolean | | `True` | | |
- | [ structured_config](## "bgp_peer_groups.evpn_overlay_core.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.evpn_overlay_core.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ mpls_overlay_peers](## "bgp_peer_groups.mpls_overlay_peers") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.mpls_overlay_peers.name") | String | | `MPLS-OVERLAY-PEERS` | | Name of peer group. |
| [ password](## "bgp_peer_groups.mpls_overlay_peers.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.mpls_overlay_peers.bfd") | Boolean | | `True` | | |
- | [ structured_config](## "bgp_peer_groups.mpls_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.mpls_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ rr_overlay_peers](## "bgp_peer_groups.rr_overlay_peers") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.rr_overlay_peers.name") | String | | `RR-OVERLAY-PEERS` | | Name of peer group. |
| [ password](## "bgp_peer_groups.rr_overlay_peers.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.rr_overlay_peers.bfd") | Boolean | | `True` | | |
- | [ structured_config](## "bgp_peer_groups.rr_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.rr_overlay_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ ipvpn_gateway_peers](## "bgp_peer_groups.ipvpn_gateway_peers") | Dictionary | | | | |
| [ name](## "bgp_peer_groups.ipvpn_gateway_peers.name") | String | | `IPVPN-GATEWAY-PEERS` | | Name of peer group. |
| [ password](## "bgp_peer_groups.ipvpn_gateway_peers.password") | String | | | | Type 7 encrypted password. |
| [ bfd](## "bgp_peer_groups.ipvpn_gateway_peers.bfd") | Boolean | | `True` | | |
- | [ structured_config](## "bgp_peer_groups.ipvpn_gateway_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen. |
+ | [ structured_config](## "bgp_peer_groups.ipvpn_gateway_peers.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen. |
| [ IPv4_UNDERLAY_PEERS](## "bgp_peer_groups.IPv4_UNDERLAY_PEERS") removed | Dictionary | | | | This key was removed. Support was removed in AVD version 4.0.0. Use bgp_peer_groups.ipv4_underlay_peers instead. |
| [ MLAG_IPv4_UNDERLAY_PEER](## "bgp_peer_groups.MLAG_IPv4_UNDERLAY_PEER") removed | Dictionary | | | | This key was removed. Support was removed in AVD version 4.0.0. Use bgp_peer_groups.mlag_ipv4_underlay_peer instead. |
| [ EVPN_OVERLAY_PEERS](## "bgp_peer_groups.EVPN_OVERLAY_PEERS") removed | Dictionary | | | | This key was removed. Support was removed in AVD version 4.0.0. Use bgp_peer_groups.evpn_overlay_peers instead. |
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 6b5d1db9af6..52b33380669 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
@@ -140,9 +140,9 @@
| [ encapsulation_vlan](## "<connected_endpoints_keys.key>.[].adapters.[].port_channel.subinterfaces.[].encapsulation_vlan") | Dictionary | | | | Client VLAN ID encapsulation.
Default is subinterface number.
|
| [ client_dot1q](## "<connected_endpoints_keys.key>.[].adapters.[].port_channel.subinterfaces.[].encapsulation_vlan.client_dot1q") | Integer | | | Min: 1
Max: 4094 | |
| [ raw_eos_cli](## "<connected_endpoints_keys.key>.[].adapters.[].port_channel.raw_eos_cli") | String | | | | EOS CLI rendered directly on the port-channel interface in the final EOS configuration. |
- | [ structured_config](## "<connected_endpoints_keys.key>.[].adapters.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "<connected_endpoints_keys.key>.[].adapters.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen. |
| [ raw_eos_cli](## "<connected_endpoints_keys.key>.[].adapters.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the ethernet interface in the final EOS configuration. |
- | [ structured_config](## "<connected_endpoints_keys.key>.[].adapters.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "<connected_endpoints_keys.key>.[].adapters.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen. |
=== "YAML"
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 1c31448601e..9b0acf97a56 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
@@ -46,7 +46,7 @@
| [ interfaces](## "core_interfaces.p2p_links_profiles.[].port_channel.nodes_child_interfaces.[].interfaces") | List, items: String | | | | List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ]. |
| [ - <str>](## "core_interfaces.p2p_links_profiles.[].port_channel.nodes_child_interfaces.[].interfaces.[].<str>") | String | | | | |
| [ raw_eos_cli](## "core_interfaces.p2p_links_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
- | [ structured_config](## "core_interfaces.p2p_links_profiles.[].structured_config") | Dictionary | | | | Custom structured config for interfaces |
+ | [ structured_config](## "core_interfaces.p2p_links_profiles.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
| [ p2p_links](## "core_interfaces.p2p_links") | List, items: Dictionary | | | | |
| [ - nodes](## "core_interfaces.p2p_links.[].nodes") | List, items: String | Required | | | Nodes where this link should be configured. |
| [ - <str>](## "core_interfaces.p2p_links.[].nodes.[].<str>") | String | | | | The values can be < node_a >, < node_b >.
ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
|
@@ -86,7 +86,7 @@
| [ interfaces](## "core_interfaces.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces") | List, items: String | | | | List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ]. |
| [ - <str>](## "core_interfaces.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces.[].<str>") | String | | | | |
| [ raw_eos_cli](## "core_interfaces.p2p_links.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
- | [ structured_config](## "core_interfaces.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces |
+ | [ structured_config](## "core_interfaces.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
=== "YAML"
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 31259eadbe7..d9f9d70803d 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
@@ -46,7 +46,7 @@
| [ interfaces](## "l3_edge.p2p_links_profiles.[].port_channel.nodes_child_interfaces.[].interfaces") | List, items: String | | | | List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ]. |
| [ - <str>](## "l3_edge.p2p_links_profiles.[].port_channel.nodes_child_interfaces.[].interfaces.[].<str>") | String | | | | |
| [ raw_eos_cli](## "l3_edge.p2p_links_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
- | [ structured_config](## "l3_edge.p2p_links_profiles.[].structured_config") | Dictionary | | | | Custom structured config for interfaces |
+ | [ structured_config](## "l3_edge.p2p_links_profiles.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
| [ p2p_links](## "l3_edge.p2p_links") | List, items: Dictionary | | | | |
| [ - nodes](## "l3_edge.p2p_links.[].nodes") | List, items: String | Required | | | Nodes where this link should be configured. |
| [ - <str>](## "l3_edge.p2p_links.[].nodes.[].<str>") | String | | | | The values can be < node_a >, < node_b >.
ex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].
|
@@ -86,7 +86,7 @@
| [ interfaces](## "l3_edge.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces") | List, items: String | | | | List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ]. |
| [ - <str>](## "l3_edge.p2p_links.[].port_channel.nodes_child_interfaces.[].interfaces.[].<str>") | String | | | | |
| [ raw_eos_cli](## "l3_edge.p2p_links.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the point-to-point interface in the final EOS configuration. |
- | [ structured_config](## "l3_edge.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces |
+ | [ structured_config](## "l3_edge.p2p_links.[].structured_config") | Dictionary | | | | Custom structured config for interfaces
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces. |
=== "YAML"
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 a11b4757c01..f6a29532e61 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
@@ -133,9 +133,9 @@
| [ encapsulation_vlan](## "network_ports.[].port_channel.subinterfaces.[].encapsulation_vlan") | Dictionary | | | | Client VLAN ID encapsulation.
Default is subinterface number.
|
| [ client_dot1q](## "network_ports.[].port_channel.subinterfaces.[].encapsulation_vlan.client_dot1q") | Integer | | | Min: 1
Max: 4094 | |
| [ raw_eos_cli](## "network_ports.[].port_channel.raw_eos_cli") | String | | | | EOS CLI rendered directly on the port-channel interface in the final EOS configuration. |
- | [ structured_config](## "network_ports.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "network_ports.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen. |
| [ raw_eos_cli](## "network_ports.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the ethernet interface in the final EOS configuration. |
- | [ structured_config](## "network_ports.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "network_ports.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen. |
=== "YAML"
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 45af33a2b47..28b19785aeb 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
@@ -16,7 +16,7 @@
| [ trunk_groups](## "<network_services_keys.name>.[].l2vlans.[].trunk_groups") | List, items: String | | | | |
| [ - <str>](## "<network_services_keys.name>.[].l2vlans.[].trunk_groups.[].<str>") | String | | | | Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.
Requires enable_trunk_groups: true.
|
| [ bgp](## "<network_services_keys.name>.[].l2vlans.[].bgp") | Dictionary | | | | |
- | [ structured_config](## "<network_services_keys.name>.[].l2vlans.[].bgp.structured_config") | Dictionary | | | | Structured configuration for eos_cli_config_gen rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles.
|
+ | [ structured_config](## "<network_services_keys.name>.[].l2vlans.[].bgp.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.vlans.[id=] for eos_cli_config_gen.
This configuration will not be applied to vlan aware bundles.
|
| [ raw_eos_cli](## "<network_services_keys.name>.[].l2vlans.[].bgp.raw_eos_cli") | String | | | | EOS cli commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles.
|
=== "YAML"
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 88be302be55..600e5071052 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
@@ -33,7 +33,7 @@
| [ key](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].ospf.message_digest_keys.[].key") | String | | | | Key password. |
| [ pim](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].pim") | Dictionary | | | | Enable PIM sparse-mode on the interface; requires "evpn_l3_multicast" to be enabled on the VRF/Tenant
Enabling this implicitly makes the device a PIM External Gateway (PEG) in EVPN designs only.
At least one RP address must be configured for EVPN PEG to be configured.
|
| [ enabled](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].pim.enabled") | Boolean | | | | |
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces. for eos_cli_config_gen.
|
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen. |
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].l3_interfaces.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the Ethernet interface in the final EOS configuration.
|
=== "YAML"
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 ed0390160c8..9f6cfcf8813 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
@@ -51,7 +51,7 @@
| [ redistribute_static](## "<network_services_keys.name>.[].vrfs.[].redistribute_static") | Boolean | | | | Non-selectively enabling or disabling redistribute static inside the VRF. |
| [ bgp](## "<network_services_keys.name>.[].vrfs.[].bgp") | Dictionary | | | | |
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].bgp.raw_eos_cli") | String | | | | EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.
|
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].bgp.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.vrfs. for eos_cli_config_gen.
|
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].bgp.structured_config") | Dictionary | | | | Custom structured config added under router_bgp.vrfs.[name=] for eos_cli_config_gen. |
| [ additional_route_targets](## "<network_services_keys.name>.[].vrfs.[].additional_route_targets") | List, items: Dictionary | | | | Configuration of extra route-targets for this VRF. Useful for route-leaking or gateway between address families. |
| [ - type](## "<network_services_keys.name>.[].vrfs.[].additional_route_targets.[].type") | String | | | Valid Values:
- import
- export | |
| [ address_family](## "<network_services_keys.name>.[].vrfs.[].additional_route_targets.[].address_family") | String | | | | |
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 e6c39bfc704..8ba81613f2f 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
@@ -42,10 +42,10 @@
| [ vxlan](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
| [ mtu](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].mtu") | Integer | | | | Interface MTU. |
| [ bgp](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].bgp") | Dictionary | | | | |
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles
|
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
|
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].bgp.raw_eos_cli") | String | | | | EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.
|
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
|
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
|
| [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].enabled") | Boolean | | | | Enable or disable interface |
| [ description](## "<network_services_keys.name>.[].vrfs.[].svis.[].description") | String | | | | SVI description. By default set to VLAN name.
|
| [ ip_address](## "<network_services_keys.name>.[].vrfs.[].svis.[].ip_address") | String | | | | IPv4_address/Mask. Usually set under "nodes" to have unique IPv4 addresses per node. |
@@ -75,10 +75,10 @@
| [ vxlan](## "<network_services_keys.name>.[].vrfs.[].svis.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
| [ mtu](## "<network_services_keys.name>.[].vrfs.[].svis.[].mtu") | Integer | | | | Interface MTU. |
| [ bgp](## "<network_services_keys.name>.[].vrfs.[].svis.[].bgp") | Dictionary | | | | |
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles
|
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
|
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].svis.[].bgp.raw_eos_cli") | String | | | | EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.
|
| [ raw_eos_cli](## "<network_services_keys.name>.[].vrfs.[].svis.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
|
- | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].svis.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
|
=== "YAML"
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 c4e6b475d1c..f9388c242ef 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
@@ -4,9 +4,9 @@
| -------- | ---- | -------- | ------- | ------------------ | ----------- |
| [<node_type_keys.key>](## "<node_type_keys.key>") | Dictionary | | | | |
| [ defaults](## "<node_type_keys.key>.defaults") | Dictionary | | | | Define variables for all nodes of this type. |
- | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.defaults.mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces. for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.defaults.mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.defaults.mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.defaults.mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.defaults.mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.defaults.mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
| [ mlag](## "<node_type_keys.key>.defaults.mlag") | Boolean | | `True` | | Enable / Disable auto MLAG, when two nodes are defined in node group. |
| [ mlag_dual_primary_detection](## "<node_type_keys.key>.defaults.mlag_dual_primary_detection") | Boolean | | `False` | | Enable / Disable MLAG dual primary detection. |
| [ mlag_ibgp_origin_incomplete](## "<node_type_keys.key>.defaults.mlag_ibgp_origin_incomplete") | Boolean | | `True` | | Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
|
@@ -28,9 +28,9 @@
| [ - group](## "<node_type_keys.key>.node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
| [ nodes](## "<node_type_keys.key>.node_groups.[].nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## "<node_type_keys.key>.node_groups.[].nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
- | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces. for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
| [ mlag](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag") | Boolean | | `True` | | Enable / Disable auto MLAG, when two nodes are defined in node group. |
| [ mlag_dual_primary_detection](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_dual_primary_detection") | Boolean | | `False` | | Enable / Disable MLAG dual primary detection. |
| [ mlag_ibgp_origin_incomplete](## "<node_type_keys.key>.node_groups.[].nodes.[].mlag_ibgp_origin_incomplete") | Boolean | | `True` | | Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
|
@@ -48,9 +48,9 @@
| [ spanning_tree_priority](## "<node_type_keys.key>.node_groups.[].nodes.[].spanning_tree_priority") | Integer | | `32768` | | |
| [ spanning_tree_root_super](## "<node_type_keys.key>.node_groups.[].nodes.[].spanning_tree_root_super") | Boolean | | `False` | | |
| [ virtual_router_mac_address](## "<node_type_keys.key>.node_groups.[].nodes.[].virtual_router_mac_address") | String | | | Format: mac | Virtual router mac address for anycast gateway. |
- | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces. for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.node_groups.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
| [ mlag](## "<node_type_keys.key>.node_groups.[].mlag") | Boolean | | `True` | | Enable / Disable auto MLAG, when two nodes are defined in node group. |
| [ mlag_dual_primary_detection](## "<node_type_keys.key>.node_groups.[].mlag_dual_primary_detection") | Boolean | | `False` | | Enable / Disable MLAG dual primary detection. |
| [ mlag_ibgp_origin_incomplete](## "<node_type_keys.key>.node_groups.[].mlag_ibgp_origin_incomplete") | Boolean | | `True` | | Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
|
@@ -70,9 +70,9 @@
| [ virtual_router_mac_address](## "<node_type_keys.key>.node_groups.[].virtual_router_mac_address") | String | | | Format: mac | Virtual router mac address for anycast gateway. |
| [ nodes](## "<node_type_keys.key>.nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## "<node_type_keys.key>.nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
- | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.nodes.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces. for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.nodes.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
- | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.nodes.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces. for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_port_channel_structured_config](## "<node_type_keys.key>.nodes.[].mlag_port_channel_structured_config") | Dictionary | | | | Custom structured config applied to MLAG peer link port-channel id.
Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_vlan_structured_config](## "<node_type_keys.key>.nodes.[].mlag_peer_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ mlag_peer_l3_vlan_structured_config](## "<node_type_keys.key>.nodes.[].mlag_peer_l3_vlan_structured_config") | Dictionary | | | | Custom structured config applied to MLAG underlay L3 peering SVI interface id.
Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
| [ mlag](## "<node_type_keys.key>.nodes.[].mlag") | Boolean | | `True` | | Enable / Disable auto MLAG, when two nodes are defined in node group. |
| [ mlag_dual_primary_detection](## "<node_type_keys.key>.nodes.[].mlag_dual_primary_detection") | Boolean | | `False` | | Enable / Disable MLAG dual primary detection. |
| [ mlag_ibgp_origin_incomplete](## "<node_type_keys.key>.nodes.[].mlag_ibgp_origin_incomplete") | Boolean | | `True` | | Set origin of routes received from MLAG iBGP peer to incomplete.
The purpose is to optimize routing for leaf loopbacks from spine perspective and
avoid suboptimal routing via peerlink for control plane traffic.
|
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 b7a0af6abb0..41d9d85f23a 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
@@ -26,7 +26,7 @@
| [ enable](## "<node_type_keys.key>.defaults.uplink_ptp.enable") | Boolean | | `False` | | |
| [ uplink_macsec](## "<node_type_keys.key>.defaults.uplink_macsec") | Dictionary | | | | Enable MacSec on all uplinks. |
| [ profile](## "<node_type_keys.key>.defaults.uplink_macsec.profile") | String | | | | |
- | [ uplink_structured_config](## "<node_type_keys.key>.defaults.uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces. for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces. for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ uplink_structured_config](## "<node_type_keys.key>.defaults.uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
|
| [ short_esi](## "<node_type_keys.key>.defaults.short_esi") | String | | | | short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000 | auto >.
|
| [ node_groups](## "<node_type_keys.key>.node_groups") | List, items: Dictionary | | | | Define variables related to all nodes part of this group. |
| [ - group](## "<node_type_keys.key>.node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
@@ -54,7 +54,7 @@
| [ enable](## "<node_type_keys.key>.node_groups.[].nodes.[].uplink_ptp.enable") | Boolean | | `False` | | |
| [ uplink_macsec](## "<node_type_keys.key>.node_groups.[].nodes.[].uplink_macsec") | Dictionary | | | | Enable MacSec on all uplinks. |
| [ profile](## "<node_type_keys.key>.node_groups.[].nodes.[].uplink_macsec.profile") | String | | | | |
- | [ uplink_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces. for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces. for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ uplink_structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
|
| [ short_esi](## "<node_type_keys.key>.node_groups.[].nodes.[].short_esi") | String | | | | short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000 | auto >.
|
| [ link_tracking](## "<node_type_keys.key>.node_groups.[].link_tracking") | Dictionary | | | | This configures the Link Tracking Group on a switch as well as adds the p2p-uplinks of the switch as the upstream interfaces.
Useful in EVPN multhoming designs.
|
| [ enabled](## "<node_type_keys.key>.node_groups.[].link_tracking.enabled") | Boolean | | `False` | | |
@@ -78,7 +78,7 @@
| [ enable](## "<node_type_keys.key>.node_groups.[].uplink_ptp.enable") | Boolean | | `False` | | |
| [ uplink_macsec](## "<node_type_keys.key>.node_groups.[].uplink_macsec") | Dictionary | | | | Enable MacSec on all uplinks. |
| [ profile](## "<node_type_keys.key>.node_groups.[].uplink_macsec.profile") | String | | | | |
- | [ uplink_structured_config](## "<node_type_keys.key>.node_groups.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces. for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces. for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ uplink_structured_config](## "<node_type_keys.key>.node_groups.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
|
| [ short_esi](## "<node_type_keys.key>.node_groups.[].short_esi") | String | | | | short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000 | auto >.
|
| [ nodes](## "<node_type_keys.key>.nodes") | List, items: Dictionary | | | | Define variables per node. |
| [ - name](## "<node_type_keys.key>.nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
@@ -104,7 +104,7 @@
| [ enable](## "<node_type_keys.key>.nodes.[].uplink_ptp.enable") | Boolean | | `False` | | |
| [ uplink_macsec](## "<node_type_keys.key>.nodes.[].uplink_macsec") | Dictionary | | | | Enable MacSec on all uplinks. |
| [ profile](## "<node_type_keys.key>.nodes.[].uplink_macsec.profile") | String | | | | |
- | [ uplink_structured_config](## "<node_type_keys.key>.nodes.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces. for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces. for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
|
+ | [ uplink_structured_config](## "<node_type_keys.key>.nodes.[].uplink_structured_config") | Dictionary | | | | Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
|
| [ short_esi](## "<node_type_keys.key>.nodes.[].short_esi") | String | | | | short_esi only valid for l2leaf devices using port-channel uplink.
Setting short_esi to "auto" generates the short_esi automatically using a hash of configuration elements.
< 0000:0000:0000 | auto >.
|
=== "YAML"
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 35b18f07bfd..d61415cfcf3 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
@@ -130,9 +130,9 @@
| [ encapsulation_vlan](## "port_profiles.[].port_channel.subinterfaces.[].encapsulation_vlan") | Dictionary | | | | Client VLAN ID encapsulation.
Default is subinterface number.
|
| [ client_dot1q](## "port_profiles.[].port_channel.subinterfaces.[].encapsulation_vlan.client_dot1q") | Integer | | | Min: 1
Max: 4094 | |
| [ raw_eos_cli](## "port_profiles.[].port_channel.raw_eos_cli") | String | | | | EOS CLI rendered directly on the port-channel interface in the final EOS configuration. |
- | [ structured_config](## "port_profiles.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "port_profiles.[].port_channel.structured_config") | Dictionary | | | | Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen. |
| [ raw_eos_cli](## "port_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the ethernet interface in the final EOS configuration. |
- | [ structured_config](## "port_profiles.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "port_profiles.[].structured_config") | Dictionary | | | | Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen. |
=== "YAML"
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 ec57dc0a449..e7dde79a21d 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
@@ -4,10 +4,44 @@
| -------- | ---- | -------- | ------- | ------------------ | ----------- |
| [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. |
+ | [<network_services_keys.name>](## "<network_services_keys.name>") | List, items: Dictionary | | | | |
+ | [ - name](## "<network_services_keys.name>.[].name") | String | Required, Unique | | | Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
Networks services can be filtered by tenant name.
|
+ | [ vrfs](## "<network_services_keys.name>.[].vrfs") | List, items: Dictionary | | | | VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node.
It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants
are accepted by `filter.tenants` on the node, any object set under the duplicate VRFs must either be unique or be an exact match.
VRF "default" is partially supported under network-services. Currently the supported options for "default" vrf are route-target,
route-distinguisher settings, structured_config, raw_eos_cli in bgp and SVIs are the only supported interface type.
Vlan-aware-bundles are supported as well inside default vrf. OSPF is not supported currently.
|
+ | [ - name](## "<network_services_keys.name>.[].vrfs.[].name") | String | Required, Unique | | | |
+ | [ structured_config](## "<network_services_keys.name>.[].vrfs.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
+ | [<node_type_keys.key>](## "<node_type_keys.key>") | Dictionary | | | | |
+ | [ defaults](## "<node_type_keys.key>.defaults") | Dictionary | | | | Define variables for all nodes of this type. |
+ | [ structured_config](## "<node_type_keys.key>.defaults.structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
+ | [ node_groups](## "<node_type_keys.key>.node_groups") | List, items: Dictionary | | | | Define variables related to all nodes part of this group. |
+ | [ - group](## "<node_type_keys.key>.node_groups.[].group") | String | Required, Unique | | | The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
|
+ | [ nodes](## "<node_type_keys.key>.node_groups.[].nodes") | List, items: Dictionary | | | | Define variables per node. |
+ | [ - name](## "<node_type_keys.key>.node_groups.[].nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
+ | [ structured_config](## "<node_type_keys.key>.node_groups.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
+ | [ structured_config](## "<node_type_keys.key>.node_groups.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
+ | [ nodes](## "<node_type_keys.key>.nodes") | List, items: Dictionary | | | | Define variables per node. |
+ | [ - name](## "<node_type_keys.key>.nodes.[].name") | String | Required, Unique | | | The Node Name is used as "hostname". |
+ | [ structured_config](## "<node_type_keys.key>.nodes.[].structured_config") | Dictionary | | | | Custom structured config for eos_cli_config_gen. |
=== "YAML"
```yaml
avd_data_conversion_mode:
avd_data_validation_mode:
+ :
+ - name:
+ vrfs:
+ - name:
+ structured_config:
+ :
+ defaults:
+ structured_config:
+ node_groups:
+ - group:
+ nodes:
+ - name:
+ structured_config:
+ structured_config:
+ nodes:
+ - name:
+ structured_config:
```
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 06789966b13..81323c1c7e8 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
@@ -37,10 +37,10 @@
| [ vxlan](## "svi_profiles.[].nodes.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
| [ mtu](## "svi_profiles.[].nodes.[].mtu") | Integer | | | | Interface MTU. |
| [ bgp](## "svi_profiles.[].nodes.[].bgp") | Dictionary | | | | |
- | [ structured_config](## "svi_profiles.[].nodes.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles
|
+ | [ structured_config](## "svi_profiles.[].nodes.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
|
| [ raw_eos_cli](## "svi_profiles.[].nodes.[].bgp.raw_eos_cli") | String | | | | EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.
|
| [ raw_eos_cli](## "svi_profiles.[].nodes.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
|
- | [ structured_config](## "svi_profiles.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "svi_profiles.[].nodes.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
|
| [ name](## "svi_profiles.[].name") | String | | | | VLAN name |
| [ enabled](## "svi_profiles.[].enabled") | Boolean | | | | Enable or disable interface |
| [ description](## "svi_profiles.[].description") | String | | | | SVI description. By default set to VLAN name.
|
@@ -71,10 +71,10 @@
| [ vxlan](## "svi_profiles.[].vxlan") | Boolean | | `True` | | Extend this SVI over VXLAN. |
| [ mtu](## "svi_profiles.[].mtu") | Integer | | | | Interface MTU. |
| [ bgp](## "svi_profiles.[].bgp") | Dictionary | | | | |
- | [ structured_config](## "svi_profiles.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.
This configuration will not be applied to vlan aware bundles
|
+ | [ structured_config](## "svi_profiles.[].bgp.structured_config") | Dictionary | | | | Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
|
| [ raw_eos_cli](## "svi_profiles.[].bgp.raw_eos_cli") | String | | | | EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.
|
| [ raw_eos_cli](## "svi_profiles.[].raw_eos_cli") | String | | | | EOS CLI rendered directly on the VLAN interface in the final EOS configuration.
|
- | [ structured_config](## "svi_profiles.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces. for eos_cli_config_gen. |
+ | [ structured_config](## "svi_profiles.[].structured_config") | Dictionary | | | | Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
|
=== "YAML"
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 cecb9ffdf29..a18ff0d06e3 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
@@ -184,7 +184,278 @@
},
"structured_config": {
"type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
"title": "Structured Config"
}
},
@@ -215,131 +486,278 @@
},
"structured_config": {
"type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "MLAG IPv4 Underlay Peer"
- },
- "evpn_overlay_peers": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "default": "EVPN-OVERLAY-PEERS",
- "description": "Name of peer group.",
- "title": "Name"
- },
- "password": {
- "type": "string",
- "description": "Type 7 encrypted password.",
- "title": "Password"
- },
- "bfd": {
- "type": "boolean",
- "default": true,
- "title": "BFD"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EVPN Overlay Peers"
- },
- "evpn_overlay_core": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "default": "EVPN-OVERLAY-CORE",
- "description": "Name of peer group.",
- "title": "Name"
- },
- "password": {
- "type": "string",
- "description": "Type 7 encrypted password.",
- "title": "Password"
- },
- "bfd": {
- "type": "boolean",
- "default": true,
- "title": "BFD"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EVPN Overlay Core"
- },
- "mpls_overlay_peers": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "default": "MPLS-OVERLAY-PEERS",
- "description": "Name of peer group.",
- "title": "Name"
- },
- "password": {
- "type": "string",
- "description": "Type 7 encrypted password.",
- "title": "Password"
- },
- "bfd": {
- "type": "boolean",
- "default": true,
- "title": "BFD"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "MPLS Overlay Peers"
- },
- "rr_overlay_peers": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "default": "RR-OVERLAY-PEERS",
- "description": "Name of peer group.",
- "title": "Name"
- },
- "password": {
- "type": "string",
- "description": "Type 7 encrypted password.",
- "title": "Password"
- },
- "bfd": {
- "type": "boolean",
- "default": true,
- "title": "BFD"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
"title": "Structured Config"
}
},
@@ -347,14 +765,14 @@
"patternProperties": {
"^_.+$": {}
},
- "title": "Rr Overlay Peers"
+ "title": "MLAG IPv4 Underlay Peer"
},
- "ipvpn_gateway_peers": {
+ "evpn_overlay_peers": {
"type": "object",
"properties": {
"name": {
"type": "string",
- "default": "IPVPN-GATEWAY-PEERS",
+ "default": "EVPN-OVERLAY-PEERS",
"description": "Name of peer group.",
"title": "Name"
},
@@ -370,1358 +788,1641 @@
},
"structured_config": {
"type": "object",
- "description": "Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Ipvpn Gateway Peers"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "BGP Peer Groups"
- },
- "bgp_update_wait_install": {
- "type": "boolean",
- "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n",
- "title": "BGP Update Wait Install"
- },
- "bgp_update_wait_for_convergence": {
- "type": "boolean",
- "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n",
- "title": "BGP Update Wait For Convergence"
- },
- "connected_endpoints_keys": {
- "description": "Endpoints connecting to the fabric can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`connected_endpoints_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "title": "Key"
- },
- "type": {
- "type": "string",
- "description": "Type used for documentation.",
- "title": "Type"
- },
- "description": {
- "type": "string",
- "description": "Description used for documentation.",
- "title": "Description"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "required": [
- "key"
- ]
- },
- "default": [
- {
- "key": "servers",
- "type": "server",
- "description": "Server"
- },
- {
- "key": "firewalls",
- "type": "firewall",
- "description": "Firewall"
- },
- {
- "key": "routers",
- "type": "router",
- "description": "Router"
- },
- {
- "key": "load_balancers",
- "type": "load_balancer",
- "description": "Load Balancer"
- },
- {
- "key": "storage_arrays",
- "type": "storage_array",
- "description": "Storage Array"
- },
- {
- "key": "cpes",
- "type": "cpe",
- "description": "CPE"
- },
- {
- "key": "workstations",
- "type": "workstation",
- "description": "Workstation"
- },
- {
- "key": "access_points",
- "type": "access_point",
- "description": "Access Point"
- },
- {
- "key": "phones",
- "type": "phone",
- "description": "Phone"
- },
- {
- "key": "printers",
- "type": "printer",
- "description": "Printer"
- },
- {
- "key": "cameras",
- "type": "camera",
- "description": "Camera"
- },
- {
- "key": "generic_devices",
- "type": "generic_device",
- "description": "Generic Device"
- }
- ],
- "title": "Connected Endpoints Keys"
- },
- "core_interfaces": {
- "type": "object",
- "properties": {
- "p2p_links_ip_pools": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "P2P pool name.",
- "title": "Name"
- },
- "ipv4_pool": {
- "type": "string",
- "description": "IPv4 address/Mask.",
- "title": "IPv4 Pool"
- },
- "prefix_size": {
- "type": "integer",
- "description": "Subnet mask size.",
- "default": 31,
- "minimum": 8,
- "maximum": 31,
- "title": "Prefix Size"
- }
- },
- "required": [
- "name"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "P2P Links IP Pools"
- },
- "p2p_links_profiles": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "P2P profile name. Any variable supported under p2p_links can be inherited from a profile.",
- "title": "Name"
- },
- "id": {
- "type": "integer",
- "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n",
- "title": "ID"
- },
- "speed": {
- "type": "string",
- "description": "The values can be speed or auto speed or forced speed.",
- "title": "Speed"
- },
- "ip_pool": {
- "type": "string",
- "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.",
- "title": "IP Pool"
- },
- "subnet": {
- "type": "string",
- "description": "IPv4 address/Mask. Subnet used on this P2P link.",
- "title": "Subnet"
- },
- "ip": {
- "type": "array",
- "description": "Specific IP addresses used on this P2P link.",
- "items": {
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
"type": "string",
- "description": "Node IPv4 address/Mask."
+ "description": "Peer-group name",
+ "title": "Name"
},
- "title": "IP"
- },
- "ipv6_enable": {
- "type": "boolean",
- "default": false,
- "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).",
- "title": "IPv6 Enable"
- },
- "nodes": {
- "type": "array",
- "description": "Nodes where this link should be configured.",
- "items": {
+ "type": {
"type": "string",
- "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n"
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
},
- "title": "Nodes"
- },
- "interfaces": {
- "type": "array",
- "description": "Interfaces where this link should be configured and Required unless using port-channels.",
- "items": {
+ "remote_as": {
"type": "string",
- "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n"
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
},
- "title": "Interfaces"
- },
- "as": {
- "type": "array",
- "description": "AS numbers for BGP.\nRequired with bgp peering.\n",
- "items": {
+ "local_as": {
"type": "string",
- "description": "The values can be like [\"node_a_as\", \"node_b_as\"]."
- },
- "title": "As"
- },
- "descriptions": {
- "type": "array",
- "description": "Interface description.",
- "items": {
- "type": "string"
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
},
- "title": "Descriptions"
- },
- "include_in_underlay_protocol": {
- "type": "boolean",
- "default": true,
- "description": "Add this interface to underlay routing protocol.",
- "title": "Include In Underlay Protocol"
- },
- "isis_hello_padding": {
- "type": "boolean",
- "default": false,
- "title": "ISIS Hello Padding"
- },
- "isis_metric": {
- "type": "integer",
- "title": "ISIS Metric"
- },
- "isis_circuit_type": {
- "type": "string",
- "enum": [
- "level-1",
- "level-2",
- "level-1-2"
- ],
- "title": "ISIS Circuit Type"
- },
- "isis_authentication_mode": {
- "type": "string",
- "enum": [
- "md5",
- "text"
- ],
- "title": "ISIS Authentication Mode"
- },
- "isis_authentication_key": {
- "type": "string",
- "description": "Type-7 encrypted password.",
- "title": "ISIS Authentication Key"
- },
- "mpls_ip": {
- "type": "boolean",
- "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.",
- "title": "MPLS IP"
- },
- "mpls_ldp": {
- "type": "boolean",
- "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.",
- "title": "MPLS LDP"
- },
- "mtu": {
- "type": "integer",
- "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.",
- "title": "MTU"
- },
- "bfd": {
- "type": "boolean",
- "default": false,
- "description": "Enable BFD (only considered for BGP).",
- "title": "BFD"
- },
- "ptp": {
- "description": "PTP parameters.",
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable PTP.",
- "title": "Enabled"
- }
+ "description": {
+ "type": "string",
+ "title": "Description"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
},
- "title": "PTP"
- },
- "sflow": {
- "type": "boolean",
- "description": "Enable sFlow. Overrides `fabric_sflow` setting.",
- "title": "Sflow"
- },
- "qos_profile": {
- "type": "string",
- "description": "QOS service profile.",
- "title": "QOS Profile"
- },
- "macsec_profile": {
- "type": "string",
- "description": "MAC security profile.",
- "title": "Macsec Profile"
- },
- "port_channel": {
- "description": "Port-channel parameters.",
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "default": "active",
- "title": "Mode"
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
},
- "nodes_child_interfaces": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "node": {
- "type": "string",
- "title": "Node"
- },
- "interfaces": {
- "type": "array",
- "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].",
- "items": {
- "type": "string"
- },
- "title": "Interfaces"
- }
- },
- "required": [
- "node"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
},
- "title": "Nodes Child Interfaces"
- }
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
},
- "title": "Port Channel"
- },
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.",
- "title": "Raw EOS CLI"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config for interfaces",
- "title": "Structured Config"
- }
- },
- "required": [
- "name"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "P2P Links Profiles"
- },
- "p2p_links": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "nodes": {
- "type": "array",
- "description": "Nodes where this link should be configured.",
- "items": {
+ "peer_filter": {
"type": "string",
- "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n"
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
},
- "title": "Nodes"
- },
- "profile": {
- "type": "string",
- "description": "P2P profile name. Profile defined under p2p_profiles.",
- "title": "Profile"
- },
- "id": {
- "type": "integer",
- "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n",
- "title": "ID"
- },
- "speed": {
- "type": "string",
- "description": "The values can be speed or auto speed or forced speed.",
- "title": "Speed"
- },
- "ip_pool": {
- "type": "string",
- "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.",
- "title": "IP Pool"
- },
- "subnet": {
- "type": "string",
- "description": "IPv4 address/Mask. Subnet used on this P2P link.",
- "title": "Subnet"
- },
- "ip": {
- "type": "array",
- "description": "Specific IP addresses used on this P2P link.",
- "items": {
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
"type": "string",
- "description": "Node IPv4 address/Mask."
+ "description": "IP address or interface name",
+ "title": "Update Source"
},
- "title": "IP"
- },
- "ipv6_enable": {
- "type": "boolean",
- "default": false,
- "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).",
- "title": "IPv6 Enable"
- },
- "interfaces": {
- "type": "array",
- "description": "Interfaces where this link should be configured and Required unless using port-channels.",
- "items": {
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
"type": "string",
- "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n"
+ "title": "Password"
},
- "title": "Interfaces"
- },
- "as": {
- "type": "array",
- "description": "AS numbers for BGP.\nRequired with bgp peering.\n",
- "items": {
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
"type": "string",
- "description": "The values can be like [\"node_a_as\", \"node_b_as\"]."
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
},
- "title": "As"
- },
- "descriptions": {
- "type": "array",
- "description": "Interface description.",
- "items": {
- "type": "string"
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
},
- "title": "Descriptions"
- },
- "include_in_underlay_protocol": {
- "type": "boolean",
- "default": true,
- "description": "Add this interface to underlay routing protocol.",
- "title": "Include In Underlay Protocol"
- },
- "isis_hello_padding": {
- "type": "boolean",
- "default": false,
- "title": "ISIS Hello Padding"
- },
- "isis_metric": {
- "type": "integer",
- "title": "ISIS Metric"
- },
- "isis_circuit_type": {
- "type": "string",
- "enum": [
- "level-1",
- "level-2",
- "level-1-2"
- ],
- "title": "ISIS Circuit Type"
- },
- "isis_authentication_mode": {
- "type": "string",
- "enum": [
- "md5",
- "text"
- ],
- "title": "ISIS Authentication Mode"
- },
- "isis_authentication_key": {
- "type": "string",
- "description": "Type-7 encrypted password.",
- "title": "ISIS Authentication Key"
- },
- "mpls_ip": {
- "type": "boolean",
- "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.",
- "title": "MPLS IP"
- },
- "mpls_ldp": {
- "type": "boolean",
- "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.",
- "title": "MPLS LDP"
- },
- "mtu": {
- "type": "integer",
- "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.",
- "title": "MTU"
- },
- "bfd": {
- "type": "boolean",
- "default": false,
- "description": "Enable BFD (only considered for BGP).",
- "title": "BFD"
- },
- "ptp": {
- "description": "PTP parameters.",
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": false,
- "description": "Enable PTP.",
- "title": "Enabled"
- }
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
},
- "title": "PTP"
- },
- "sflow": {
- "type": "boolean",
- "description": "Enable sFlow. Overrides `fabric_sflow` setting.",
- "title": "Sflow"
- },
- "qos_profile": {
- "type": "string",
- "description": "QOS service profile.",
- "title": "QOS Profile"
- },
- "macsec_profile": {
- "type": "string",
- "description": "MAC security profile.",
- "title": "Macsec Profile"
- },
- "port_channel": {
- "description": "Port-channel parameters.",
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "default": "active",
- "title": "Mode"
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
},
- "nodes_child_interfaces": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "node": {
- "type": "string",
- "title": "Node"
- },
- "interfaces": {
- "type": "array",
- "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].",
- "items": {
- "type": "string"
- },
- "title": "Interfaces"
- }
- },
- "required": [
- "node"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
},
- "title": "Nodes Child Interfaces"
- }
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
},
- "title": "Port Channel"
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
},
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.",
- "title": "Raw EOS CLI"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "structured_config": {
- "type": "object",
- "description": "Custom structured config for interfaces",
- "title": "Structured Config"
- }
- },
- "required": [
- "nodes"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "title": "Structured Config"
}
},
- "title": "P2P Links"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Core Interfaces"
- },
- "custom_structured_configuration_list_merge": {
- "type": "string",
- "description": "The List-merge strategy used when merging custom structured configurations.\n\nThis applies to all vars prefixed by prefixes in `custom_structured_configuration_prefix`\nand all data under the various `structured_config` options.\n\nThe available list merge strategies:\n- `replace`:\n - Any list will be replaced with the list defined in custom structured configurations.\n- `append`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be appended to the existing list (including duplicates).\n- `keep`:\n - Only set list if there is no existing list or existing list is `None`.\n- `prepend`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be prepended to the existing list (including duplicates).\n- `append_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list.\n- `prepend_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be prepended to the existing list.\n",
- "enum": [
- "replace",
- "append",
- "keep",
- "prepend",
- "append_rp",
- "prepend_rp"
- ],
- "default": "append_rp",
- "title": "Custom Structured Configuration List Merge"
- },
- "custom_structured_configuration_prefix": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Custom EOS Structured Configuration keys can be set on any group or host_var level using the name\nof the corresponding `eos_cli_config_gen` key prefixed with content of `custom_structured_configuration_prefix`.\n\nThe content of Custom Structured Configuration variables will be merged with the structured config generated by the eos_designs role.\n\nThe merge is done recursively, so it is possible to update a sub-key of a variable set by `eos_designs` role already.\n\nThe merge follow these recursive merge strategies:\n- New keys will be added for all types.\n- Existing keys of type \"List\" with a \"Primary key\" set in the schema:\n - Strategy can be changed with `custom_structured_configuration_list_merge`. Default strategy:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list\n- Other keys of type \"List\" will have new unique items appended the the existing list.\n- Existing keys of type \"Dictionary\" will recursively merge\n- Other existing keys will be replaced.\n",
- "default": [
- "custom_structured_configuration_"
- ],
- "title": "Custom Structured Configuration Prefix"
- },
- "cvp_ingestauth_key": {
- "type": "string",
- "description": "On-premise CVP ingest auth key. If set, TerminAttr will be configured with key-based authentication for on-premise CVP.\nIf not set, TerminAttr will be configured with certificate based authentication:\n- On-premise using token onboarding. Default token path is '/tmp/token'.\n- CVaaS using token-secure onboarding. Default token path is '/tmp/cv-onboarding-token'.\nToken must be copied to the device first.",
- "title": "CVP Ingestauth Key"
- },
- "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.",
- "deprecated": true,
- "title": "CVP Instance IP"
- },
- "cvp_instance_ips": {
- "type": "array",
- "description": "List of IPv4 addresses or DNS names for CloudVision.\nFor on-premise CloudVision enter all the nodes of the cluster.\nFor CloudVision as a Service enter the DNS name of the instance.\n`eos_designs` only supports one CloudVision cluster.\n",
- "items": {
- "type": "string",
- "description": "IPv4 address or DNS name for CloudVision"
- },
- "title": "CVP Instance Ips"
- },
- "cvp_token_file": {
- "type": "string",
- "description": "cvp_token_file is the path to the token file on the switch.\nIf not set the default locations for on-premise or CVaaS will be used.\nSee cvp_ingestauth_key for details.",
- "title": "CVP Token File"
- },
- "dc_name": {
- "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- HER Overlay DC scoped flood lists: `overlay_her_flood_list_scope: dc` (Required)\n",
- "type": "string",
- "title": "DC Name"
- },
- "default_igmp_snooping_enabled": {
- "description": "When set to false, disables IGMP snooping at fabric level and overrides per vlan settings.\n",
- "type": "boolean",
- "default": true,
- "title": "Default IGMP Snooping Enabled"
- },
- "default_interfaces": {
- "type": "array",
- "description": "Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).\n",
- "items": {
- "type": "object",
- "properties": {
- "types": {
- "type": "array",
- "description": "List of node type keys.",
- "items": {
- "type": "string"
- },
- "title": "Types"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "platforms": {
- "type": "array",
- "description": "List of platform families.\nThis is defined as a Python regular expression that matches the full platform type.\n",
- "items": {
+ "title": "EVPN Overlay Peers"
+ },
+ "evpn_overlay_core": {
+ "type": "object",
+ "properties": {
+ "name": {
"type": "string",
- "description": "Arista platform family regular expression."
+ "default": "EVPN-OVERLAY-CORE",
+ "description": "Name of peer group.",
+ "title": "Name"
},
- "title": "Platforms"
- },
- "uplink_interfaces": {
- "type": "array",
- "description": "List of uplink interfaces or uplink interface ranges.",
- "items": {
+ "password": {
"type": "string",
- "description": "Interface range or interface."
+ "description": "Type 7 encrypted password.",
+ "title": "Password"
},
- "title": "Uplink Interfaces"
- },
- "mlag_interfaces": {
- "type": "array",
- "description": "List of MLAG interfaces or MLAG interface ranges.",
- "items": {
- "type": "string",
- "description": "Interface range or interface."
+ "bfd": {
+ "type": "boolean",
+ "default": true,
+ "title": "BFD"
},
- "title": "MLAG Interfaces"
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
},
- "downlink_interfaces": {
- "type": "array",
- "description": "List of downlink interfaces or downlink interface ranges.",
- "items": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Overlay Core"
+ },
+ "mpls_overlay_peers": {
+ "type": "object",
+ "properties": {
+ "name": {
"type": "string",
- "description": "Interface range or interface."
+ "default": "MPLS-OVERLAY-PEERS",
+ "description": "Name of peer group.",
+ "title": "Name"
},
- "title": "Downlink Interfaces"
- }
- },
- "required": [
- "types",
- "platforms"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Default Interfaces"
- },
- "default_node_types": {
- "type": "array",
- "description": "Uses hostname matches against a regular expression to determine the node type.",
- "items": {
- "type": "object",
- "properties": {
- "node_type": {
- "type": "string",
- "description": "Resulting node type when regex matches.",
- "title": "Node Type"
- },
- "match_hostnames": {
- "type": "array",
- "description": "Regular expressions to match against hostnames.",
- "items": {
+ "password": {
"type": "string",
- "description": "Regex needs to match full hostname (i.e. is bounded by ^ and $ elements)."
+ "description": "Type 7 encrypted password.",
+ "title": "Password"
},
- "title": "Match Hostnames"
- }
- },
- "required": [
- "node_type",
- "match_hostnames"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Default Node Types"
- },
- "design": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "description": "By setting the design.type variable, the default node-types and templates described in these documents will be used.\n",
- "enum": [
- "l3ls-evpn",
- "mpls",
- "l2ls"
- ],
- "default": "l3ls-evpn",
- "title": "Type"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Design"
- },
- "enable_trunk_groups": {
- "type": "boolean",
- "description": "Enable Trunk Group support across eos_designs.\nWarning: Because of the nature of the EOS Trunk Group feature, enabling this is \"all or nothing\".\n*All* vlans and *all* trunks towards connected endpoints must be using trunk groups as well.\nIf trunk groups are not assigned to a trunk, no vlans will be enabled on that trunk.\nSee \"Details on enable_trunk_groups\" below before enabling this feature.\n",
- "default": false,
- "title": "Enable Trunk Groups"
- },
- "eos_designs_custom_templates": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "template": {
- "type": "string",
- "description": "Template file.",
- "title": "Template"
- },
- "options": {
- "description": "Template options.",
- "type": "object",
- "properties": {
- "list_merge": {
- "type": "string",
- "description": "Merge strategy for lists.",
- "default": "append_rp",
- "title": "List Merge"
+ "bfd": {
+ "type": "boolean",
+ "default": true,
+ "title": "BFD"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
},
- "strip_empty_keys": {
- "type": "boolean",
- "description": "Filter out keys from the generated output if value is null/none/undefined.",
- "default": true,
- "title": "Strip Empty Keys"
- }
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS Overlay Peers"
+ },
+ "rr_overlay_peers": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": "RR-OVERLAY-PEERS",
+ "description": "Name of peer group.",
+ "title": "Name"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "password": {
+ "type": "string",
+ "description": "Type 7 encrypted password.",
+ "title": "Password"
},
- "title": "Options"
- }
- },
- "required": [
- "template"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "EOS Designs Custom Templates"
- },
- "eos_designs_documentation": {
- "description": "Control fabric documentation generation.\n",
- "type": "object",
- "properties": {
- "connected_endpoints": {
- "description": "Generate fabric-wide documentation for connected endpoints.\n",
- "type": "boolean",
- "default": false,
- "title": "Connected Endpoints"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EOS Designs Documentation"
- },
- "event_handlers": {
- "type": "array",
- "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Event Handler Name",
- "title": "Name"
- },
- "action_type": {
- "type": "string",
- "enum": [
- "bash",
- "increment",
- "log"
- ],
- "title": "Action Type"
- },
- "action": {
- "type": "string",
- "description": "Command to execute\n",
- "title": "Action"
- },
- "delay": {
- "type": "integer",
- "description": "Event-handler delay in seconds\n",
- "title": "Delay"
- },
- "trigger": {
- "type": "string",
- "description": "Configure event trigger condition.\n",
- "enum": [
- "on-logging",
- "on-startup-config"
- ],
- "title": "Trigger"
+ "bfd": {
+ "type": "boolean",
+ "default": true,
+ "title": "BFD"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
},
- "regex": {
- "type": "string",
- "description": "Regular expression to use for searching log messages. Required for on-logging trigger\n",
- "title": "Regex"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "asynchronous": {
- "type": "boolean",
- "default": false,
- "description": "Set the action to be non-blocking.",
- "title": "Asynchronous"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "title": "Rr Overlay Peers"
},
- "required": [
- "name"
- ]
- },
- "title": "Event Handlers"
- },
- "evpn_ebgp_gateway_inter_domain": {
- "type": "boolean",
- "title": "EVPN Ebgp Gateway Inter Domain"
- },
- "evpn_ebgp_gateway_multihop": {
- "description": "Default of 15, considering a large value to avoid BGP reachability issues in very complex DCI networks.\nAdapt the value for your specific topology.\n",
- "type": "integer",
- "default": 15,
- "title": "EVPN Ebgp Gateway Multihop"
- },
- "evpn_ebgp_multihop": {
- "description": "Default of 3, the recommended value for a 3 stage spine and leaf topology.\nSet to a higher value to allow for very large and complex topologies.\n",
- "type": "integer",
- "default": 3,
- "title": "EVPN Ebgp Multihop"
- },
- "evpn_hostflap_detection": {
- "type": "object",
- "properties": {
- "enabled": {
- "description": "If set to false it will disable EVPN host-flap detection.",
- "type": "boolean",
- "default": true,
- "title": "Enabled"
- },
- "threshold": {
- "description": "Minimum number of MAC moves that indicate a MAC duplication issue.",
- "type": "integer",
- "default": 5,
- "title": "Threshold"
- },
- "window": {
- "description": "Time (in seconds) to detect a MAC duplication issue.",
- "type": "integer",
- "default": 180,
- "title": "Window"
- },
- "expiry_timeout": {
- "description": "Time (in seconds) to purge a MAC duplication issue.",
- "type": "integer",
- "title": "Expiry Timeout"
+ "ipvpn_gateway_peers": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "default": "IPVPN-GATEWAY-PEERS",
+ "description": "Name of peer group.",
+ "title": "Name"
+ },
+ "password": {
+ "type": "string",
+ "description": "Type 7 encrypted password.",
+ "title": "Password"
+ },
+ "bfd": {
+ "type": "boolean",
+ "default": true,
+ "title": "BFD"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Peer-group name",
+ "title": "Name"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "remote_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Remote As"
+ },
+ "local_as": {
+ "type": "string",
+ "description": "BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>",
+ "title": "Local As"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "as_path": {
+ "type": "object",
+ "description": "BGP AS-PATH options",
+ "properties": {
+ "remote_as_replace_out": {
+ "type": "boolean",
+ "description": "Replace AS number with local AS number",
+ "title": "Remote As Replace Out"
+ },
+ "prepend_own_disabled": {
+ "type": "boolean",
+ "description": "Disable prepending own AS number to AS path",
+ "title": "Prepend Own Disabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "As Path"
+ },
+ "remove_private_as": {
+ "type": "object",
+ "description": "Remove private AS numbers in outbound AS path",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As"
+ },
+ "remove_private_as_ingress": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "replace_as": {
+ "type": "boolean",
+ "title": "Replace As"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Remove Private As Ingress"
+ },
+ "peer_filter": {
+ "type": "string",
+ "description": "Peer-filter name\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "Peer Filter"
+ },
+ "next_hop_unchanged": {
+ "type": "boolean",
+ "title": "Next Hop Unchanged"
+ },
+ "update_source": {
+ "type": "string",
+ "description": "IP address or interface name",
+ "title": "Update Source"
+ },
+ "route_reflector_client": {
+ "type": "boolean",
+ "title": "Route Reflector Client"
+ },
+ "bfd": {
+ "type": "boolean",
+ "title": "BFD"
+ },
+ "ebgp_multihop": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "description": "Time-to-live in range of hops",
+ "title": "Ebgp Multihop"
+ },
+ "next_hop_self": {
+ "type": "boolean",
+ "title": "Next Hop Self"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password"
+ },
+ "passive": {
+ "type": "boolean",
+ "title": "Passive"
+ },
+ "default_originate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "route_map": {
+ "type": "string",
+ "description": "Route-map name",
+ "title": "Route Map"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Originate"
+ },
+ "send_community": {
+ "type": "string",
+ "description": "'all' or a combination of 'standard', 'extended', 'large' and 'link-bandwidth (w/options)'",
+ "title": "Send Community"
+ },
+ "maximum_routes": {
+ "type": "integer",
+ "description": "Maximum number of routes (0 means unlimited)",
+ "minimum": 0,
+ "maximum": 4294967294,
+ "title": "Maximum Routes"
+ },
+ "maximum_routes_warning_limit": {
+ "type": "string",
+ "description": "Maximum number of routes after which a warning is issued (0 means never warn) or\nPercentage of maximum number of routes at which to warn (\"<1-100> percent\")\n",
+ "title": "Maximum Routes Warning Limit"
+ },
+ "maximum_routes_warning_only": {
+ "type": "boolean",
+ "title": "Maximum Routes Warning Only"
+ },
+ "link_bandwidth": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "default": {
+ "type": "string",
+ "description": "nn.nn(K|M|G) link speed in bits/second",
+ "title": "Default"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Bandwidth"
+ },
+ "allowas_in": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "times": {
+ "type": "integer",
+ "description": "Number of local ASNs allowed in a BGP update",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Allowas In"
+ },
+ "weight": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Weight"
+ },
+ "timers": {
+ "type": "string",
+ "description": "BGP Keepalive and Hold Timer values in seconds as string \"<0-3600> <0-3600>\"",
+ "title": "Timers"
+ },
+ "rib_in_pre_policy_retain": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "all": {
+ "type": "boolean",
+ "title": "All"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rib In Pre Policy Retain"
+ },
+ "route_map_in": {
+ "type": "string",
+ "description": "Inbound route-map name",
+ "title": "Route Map In"
+ },
+ "route_map_out": {
+ "type": "string",
+ "description": "Outbound route-map name",
+ "title": "Route Map Out"
+ },
+ "bgp_listen_range_prefix": {
+ "type": "string",
+ "description": "IP prefix range\nnote: `bgp_listen_range_prefix` and `peer_filter` should not be mixed with\nthe new `listen_ranges` key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use listen_ranges instead.",
+ "deprecated": true,
+ "title": "BGP Listen Range Prefix"
+ },
+ "session_tracker": {
+ "type": "string",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Ipvpn Gateway Peers"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "EVPN Hostflap Detection"
- },
- "evpn_import_pruning": {
- "description": "Enable VPN import pruning (Min. EOS 4.24.2F).\nThe Route Target extended communities carried by incoming VPN paths will be examined.\nIf none of those Route Targets have been configured for import, the path will be immediately discarded.\n",
- "type": "boolean",
- "default": false,
- "title": "EVPN Import Pruning"
- },
- "evpn_multicast": {
- "type": "boolean",
- "description": "General Configuration required for EVPN Multicast. \"evpn_l2_multicast\" or \"evpn_l3_multicast\" must also be configured under the Network Services (tenants).\nRequires \"underlay_multicast: true\" and IGMP snooping enabled globally (default).\nFor MLAG devices Route Distinguisher must be unique since this feature will create multi-vtep configuration.\nWarning !!! For Trident3 based platforms i.e 7050X3, 7300X3, 720XP and 722XP\n The Following default platform setting will be configured: \"platform trident forwarding-table partition flexible exact-match 16384 l2-shared 98304 l3-shared 131072\"\n All forwarding agents will be restarted when this configuration is applied.\n You can tune the settings by overridding the default variable: \"platform_settings[platforms].trident_forwarding_table_partition:\"\n Please contact an Arista representative for help with determining the appropriate values for your environment.\n",
- "default": false,
- "title": "EVPN Multicast"
+ "title": "BGP Peer Groups"
},
- "evpn_overlay_bgp_rtc": {
- "description": "Enable Route Target Membership Constraint Address Family on EVPN overlay BGP peerings (Min. EOS 4.25.1F).\nRequires use eBGP as overlay protocol.\n",
+ "bgp_update_wait_install": {
"type": "boolean",
- "default": false,
- "title": "EVPN Overlay BGP Rtc"
+ "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\n",
+ "title": "BGP Update Wait Install"
},
- "evpn_prevent_readvertise_to_server": {
- "description": "Configure route-map on eBGP sessions towards route-servers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in large-scale networks, where convergence will be quicker by not returning all updates received\nfrom Route-server-1 to Router-server-2 just for Route-server-2 to throw them away because of AS Path loop detection.\n",
+ "bgp_update_wait_for_convergence": {
"type": "boolean",
- "default": false,
- "title": "EVPN Prevent Readvertise To Server"
+ "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\n",
+ "title": "BGP Update Wait For Convergence"
},
- "evpn_short_esi_prefix": {
- "description": "Configure prefix for \"short_esi\" values.",
- "type": "string",
- "default": "0000:0000:",
- "title": "EVPN Short Esi Prefix"
- },
- "evpn_vlan_aware_bundles": {
- "description": "Enable vlan aware bundles for EVPN MAC-VRF.",
- "type": "boolean",
- "default": false,
- "title": "EVPN VLAN Aware Bundles"
- },
- "fabric_evpn_encapsulation": {
- "description": "Should be set to mpls for evpn-mpls scenario.",
- "enum": [
- "vxlan",
- "mpls"
- ],
- "default": "vxlan",
- "type": "string",
- "title": "Fabric EVPN Encapsulation"
- },
- "fabric_ip_addressing": {
- "type": "object",
- "properties": {
- "mlag": {
- "type": "object",
- "properties": {
- "algorithm": {
- "type": "string",
- "default": "first_id",
- "description": "This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.\nEach MLAG link will have a /31 subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.\nThe offset is calculated using one of the following algorithms:\n - first_id: `(mlag_primary_id - 1) * 2` where `mlag_primary_id` is the ID of the first node defined under the node_group.\n This allocation method will skip every other /31 subnet making it less space efficient than `odd_id`.\n - odd_id: `(odd_id - 1) / 2`. Requires the node_group to have a node with an odd ID and a node with an even ID.\n - same_subnet: the offset will always be zero.\n This allocation method will cause every MLAG link to be addressed with the same /31 subnet.\n",
- "enum": [
- "first_id",
- "odd_id",
- "same_subnet"
- ],
- "title": "Algorithm"
- }
+ "connected_endpoints_keys": {
+ "description": "Endpoints connecting to the fabric can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`connected_endpoints_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string",
+ "title": "Key"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "type": {
+ "type": "string",
+ "description": "Type used for documentation.",
+ "title": "Type"
},
- "title": "MLAG"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "description": {
+ "type": "string",
+ "description": "Description used for documentation.",
+ "title": "Description"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "key"
+ ]
},
- "title": "Fabric IP Addressing"
- },
- "fabric_name": {
- "description": "Fabric Name, required to match Ansible Group name covering all devices in the Fabric, **must** be an inventory group name.",
- "type": "string",
- "title": "Fabric Name"
+ "default": [
+ {
+ "key": "servers",
+ "type": "server",
+ "description": "Server"
+ },
+ {
+ "key": "firewalls",
+ "type": "firewall",
+ "description": "Firewall"
+ },
+ {
+ "key": "routers",
+ "type": "router",
+ "description": "Router"
+ },
+ {
+ "key": "load_balancers",
+ "type": "load_balancer",
+ "description": "Load Balancer"
+ },
+ {
+ "key": "storage_arrays",
+ "type": "storage_array",
+ "description": "Storage Array"
+ },
+ {
+ "key": "cpes",
+ "type": "cpe",
+ "description": "CPE"
+ },
+ {
+ "key": "workstations",
+ "type": "workstation",
+ "description": "Workstation"
+ },
+ {
+ "key": "access_points",
+ "type": "access_point",
+ "description": "Access Point"
+ },
+ {
+ "key": "phones",
+ "type": "phone",
+ "description": "Phone"
+ },
+ {
+ "key": "printers",
+ "type": "printer",
+ "description": "Printer"
+ },
+ {
+ "key": "cameras",
+ "type": "camera",
+ "description": "Camera"
+ },
+ {
+ "key": "generic_devices",
+ "type": "generic_device",
+ "description": "Generic Device"
+ }
+ ],
+ "title": "Connected Endpoints Keys"
},
- "hardware_counters": {
+ "core_interfaces": {
"type": "object",
"properties": {
- "features": {
+ "p2p_links_ip_pools": {
"type": "array",
- "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsability of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
- "enum": [
- "acl",
- "decap-group",
- "directflow",
- "ecn",
- "flow-spec",
- "gre tunnel interface",
- "ip",
- "mpls interface",
- "mpls lfib",
- "mpls tunnel",
- "multicast",
- "nexthop",
- "pbr",
- "pdp",
- "policing interface",
- "qos",
- "qos dual-rate-policer",
- "route",
- "routed-port",
- "subinterface",
- "tapagg",
- "traffic-class",
- "traffic-policy",
- "vlan",
- "vlan-interface",
- "vni decap",
- "vni encap",
- "vtep decap",
- "vtep encap"
- ],
+ "description": "P2P pool name.",
"title": "Name"
},
- "direction": {
- "type": "string",
- "enum": [
- "in",
- "out",
- "cpu"
- ],
- "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n",
- "title": "Direction"
- },
- "address_type": {
- "type": "string",
- "enum": [
- "ipv4",
- "ipv6",
- "mac"
- ],
- "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n",
- "title": "Address Type"
- },
- "layer3": {
- "type": "boolean",
- "description": "Supported only for the 'ip' feature\n",
- "title": "Layer3"
- },
- "vrf": {
- "type": "string",
- "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n",
- "title": "VRF"
- },
- "prefix": {
+ "ipv4_pool": {
"type": "string",
- "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n",
- "title": "Prefix"
+ "description": "IPv4 address/Mask.",
+ "title": "IPv4 Pool"
},
- "units_packets": {
- "type": "boolean",
- "title": "Units Packets"
+ "prefix_size": {
+ "type": "integer",
+ "description": "Subnet mask size.",
+ "default": 31,
+ "minimum": 8,
+ "maximum": 31,
+ "title": "Prefix Size"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
- "title": "Features"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Hardware Counters"
- },
- "internal_vlan_order": {
- "type": "object",
- "description": "Internal vlan allocation order and range.",
- "properties": {
- "allocation": {
- "type": "string",
- "enum": [
- "ascending",
- "descending"
- ],
- "title": "Allocation"
- },
- "range": {
- "type": "object",
- "properties": {
- "beginning": {
- "type": "integer",
- "description": "First VLAN ID.",
- "minimum": 2,
- "maximum": 4094,
- "title": "Beginning"
- },
- "ending": {
- "type": "integer",
- "description": "Last VLAN ID.",
- "minimum": 2,
- "maximum": 4094,
- "title": "Ending"
- }
- },
- "required": [
- "beginning",
- "ending"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Range"
- }
- },
- "required": [
- "allocation"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "default": {
- "allocation": "ascending",
- "range": {
- "beginning": 1006,
- "ending": 1199
- }
- },
- "title": "Internal VLAN Order"
- },
- "ipv6_mgmt_destination_networks": {
- "description": "List of IPv6 prefixes to configure as static routes towards the OOB IPv6 Management interface gateway.\nReplaces the default route.\n",
- "type": "array",
- "items": {
- "type": "string",
- "description": "IPv6_network/Mask."
- },
- "title": "IPv6 Management Destination Networks"
- },
- "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'.",
- "title": "IPv6 Management Gateway"
- },
- "is_deployed": {
- "description": "Is device already deployed in the fabric.\nWhen set to false, interfaces toward this device may be shutdown depending on the `shutdown_interfaces_towards_undeployed_peers` setting.\nFurthermore `eos_config_deploy_cvp` will not attempt to move or apply configurations to the device.\n",
- "type": "boolean",
- "default": true,
- "title": "IS Deployed"
- },
- "isis_advertise_passive_only": {
- "type": "boolean",
- "default": false,
- "title": "ISIS Advertise Passive Only"
- },
- "isis_area_id": {
- "type": "string",
- "default": "49.0001",
- "title": "ISIS Area ID"
- },
- "isis_default_circuit_type": {
- "type": "string",
- "enum": [
- "level-1-2",
- "level-1",
- "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.",
- "title": "ISIS Default Circuit Type"
- },
- "isis_default_is_type": {
- "type": "string",
- "enum": [
- "level-1-2",
- "level-1",
- "level-2"
- ],
- "default": "level-2",
- "title": "ISIS Default IS Type"
- },
- "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.",
- "title": "ISIS Default Metric"
- },
- "isis_maximum_paths": {
- "description": "Number of path to configure in ECMP for ISIS.",
- "type": "integer",
- "title": "ISIS Maximum Paths"
- },
- "isis_ti_lfa": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": false,
- "title": "Enabled"
- },
- "protection": {
- "type": "string",
- "enum": [
- "link",
- "node"
- ],
- "title": "Protection"
- },
- "local_convergence_delay": {
- "description": "Local convergence delay in milliseconds.",
- "type": "integer",
- "default": 10000,
- "title": "Local Convergence Delay"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "ISIS TI LFA"
- },
- "l3_edge": {
- "type": "object",
- "properties": {
- "p2p_links_ip_pools": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "P2P pool name.",
- "title": "Name"
- },
- "ipv4_pool": {
- "type": "string",
- "description": "IPv4 address/Mask.",
- "title": "IPv4 Pool"
- },
- "prefix_size": {
- "type": "integer",
- "description": "Subnet mask size.",
- "default": 31,
- "minimum": 8,
- "maximum": 31,
- "title": "Prefix Size"
- }
- },
- "required": [
- "name"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "P2P Links IP Pools"
+ "title": "P2P Links IP Pools"
},
"p2p_links_profiles": {
"type": "array",
@@ -1920,13 +2621,13 @@
"title": "Interfaces"
}
},
- "required": [
- "node"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "node"
+ ]
},
"title": "Nodes Child Interfaces"
}
@@ -1944,17 +2645,17 @@
},
"structured_config": {
"type": "object",
- "description": "Custom structured config for interfaces",
+ "description": "Custom structured config for interfaces\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.",
"title": "Structured Config"
}
},
- "required": [
- "name"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "name"
+ ]
},
"title": "P2P Links Profiles"
},
@@ -2155,13 +2856,13 @@
"title": "Interfaces"
}
},
- "required": [
- "node"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "node"
+ ]
},
"title": "Nodes Child Interfaces"
}
@@ -2179,7 +2880,7 @@
},
"structured_config": {
"type": "object",
- "description": "Custom structured config for interfaces",
+ "description": "Custom structured config for interfaces\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.",
"title": "Structured Config"
}
},
@@ -2198,1131 +2899,949 @@
"patternProperties": {
"^_.+$": {}
},
- "title": "L3 Edge"
+ "title": "Core Interfaces"
},
- "local_users": {
+ "custom_structured_configuration_list_merge": {
+ "type": "string",
+ "description": "The List-merge strategy used when merging custom structured configurations.\n\nThis applies to all vars prefixed by prefixes in `custom_structured_configuration_prefix`\nand all data under the various `structured_config` options.\n\nThe available list merge strategies:\n- `replace`:\n - Any list will be replaced with the list defined in custom structured configurations.\n- `append`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be appended to the existing list (including duplicates).\n- `keep`:\n - Only set list if there is no existing list or existing list is `None`.\n- `prepend`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New items will be prepended to the existing list (including duplicates).\n- `append_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list.\n- `prepend_rp`:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be prepended to the existing list.\n",
+ "enum": [
+ "replace",
+ "append",
+ "keep",
+ "prepend",
+ "append_rp",
+ "prepend_rp"
+ ],
+ "default": "append_rp",
+ "title": "Custom Structured Configuration List Merge"
+ },
+ "custom_structured_configuration_prefix": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Custom EOS Structured Configuration keys can be set on any group or host_var level using the name\nof the corresponding `eos_cli_config_gen` key prefixed with content of `custom_structured_configuration_prefix`.\n\nThe content of Custom Structured Configuration variables will be merged with the structured config generated by the eos_designs role.\n\nThe merge is done recursively, so it is possible to update a sub-key of a variable set by `eos_designs` role already.\n\nThe merge follow these recursive merge strategies:\n- New keys will be added for all types.\n- Existing keys of type \"List\" with a \"Primary key\" set in the schema:\n - Strategy can be changed with `custom_structured_configuration_list_merge`. Default strategy:\n - Existing list items with the same \"Primary key\"-value will be updated.\n - New unique items will be appended to the existing list\n- Other keys of type \"List\" will have new unique items appended the the existing list.\n- Existing keys of type \"Dictionary\" will recursively merge\n- Other existing keys will be replaced.\n",
+ "default": [
+ "custom_structured_configuration_"
+ ],
+ "title": "Custom Structured Configuration Prefix"
+ },
+ "cvp_ingestauth_key": {
+ "type": "string",
+ "description": "On-premise CVP ingest auth key. If set, TerminAttr will be configured with key-based authentication for on-premise CVP.\nIf not set, TerminAttr will be configured with certificate based authentication:\n- On-premise using token onboarding. Default token path is '/tmp/token'.\n- CVaaS using token-secure onboarding. Default token path is '/tmp/cv-onboarding-token'.\nToken must be copied to the device first.",
+ "title": "CVP Ingestauth Key"
+ },
+ "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.",
+ "deprecated": true,
+ "title": "CVP Instance IP"
+ },
+ "cvp_instance_ips": {
+ "type": "array",
+ "description": "List of IPv4 addresses or DNS names for CloudVision.\nFor on-premise CloudVision enter all the nodes of the cluster.\nFor CloudVision as a Service enter the DNS name of the instance.\n`eos_designs` only supports one CloudVision cluster.\n",
+ "items": {
+ "type": "string",
+ "description": "IPv4 address or DNS name for CloudVision"
+ },
+ "title": "CVP Instance Ips"
+ },
+ "cvp_token_file": {
+ "type": "string",
+ "description": "cvp_token_file is the path to the token file on the switch.\nIf not set the default locations for on-premise or CVaaS will be used.\nSee cvp_ingestauth_key for details.",
+ "title": "CVP Token File"
+ },
+ "dc_name": {
+ "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- HER Overlay DC scoped flood lists: `overlay_her_flood_list_scope: dc` (Required)\n",
+ "type": "string",
+ "title": "DC Name"
+ },
+ "default_igmp_snooping_enabled": {
+ "description": "When set to false, disables IGMP snooping at fabric level and overrides per vlan settings.\n",
+ "type": "boolean",
+ "default": true,
+ "title": "Default IGMP Snooping Enabled"
+ },
+ "default_interfaces": {
"type": "array",
+ "description": "Default uplink, downlink, and MLAG interfaces, which will be used if these interfaces are not defined on a device (either directly or through inheritance).\n",
"items": {
"type": "object",
"properties": {
- "name": {
- "description": "Username",
- "type": "string",
- "title": "Name"
- },
- "disabled": {
- "type": "boolean",
- "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n",
- "title": "Disabled"
- },
- "privilege": {
- "type": "integer",
- "minimum": 0,
- "maximum": 15,
- "description": "Initial privilege level with local EXEC authorization.\n",
- "title": "Privilege"
- },
- "role": {
- "type": "string",
- "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\"\n",
- "title": "Role"
+ "types": {
+ "type": "array",
+ "description": "List of node type keys.",
+ "items": {
+ "type": "string"
+ },
+ "title": "Types"
},
- "sha512_password": {
- "type": "string",
- "description": "SHA512 Hash of Password\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n",
- "title": "SHA512 Password"
+ "platforms": {
+ "type": "array",
+ "description": "List of platform families.\nThis is defined as a Python regular expression that matches the full platform type.\n",
+ "items": {
+ "type": "string",
+ "description": "Arista platform family regular expression."
+ },
+ "title": "Platforms"
},
- "no_password": {
- "type": "boolean",
- "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n",
- "title": "No Password"
+ "uplink_interfaces": {
+ "type": "array",
+ "description": "List of uplink interfaces or uplink interface ranges.",
+ "items": {
+ "type": "string",
+ "description": "Interface range or interface."
+ },
+ "title": "Uplink Interfaces"
},
- "ssh_key": {
- "type": "string",
- "title": "SSH Key"
+ "mlag_interfaces": {
+ "type": "array",
+ "description": "List of MLAG interfaces or MLAG interface ranges.",
+ "items": {
+ "type": "string",
+ "description": "Interface range or interface."
+ },
+ "title": "MLAG Interfaces"
},
- "shell": {
- "type": "string",
- "description": "Specify shell for the user\n",
- "enum": [
- "/bin/bash",
- "/bin/sh",
- "/sbin/nologin"
- ],
- "title": "Shell"
+ "downlink_interfaces": {
+ "type": "array",
+ "description": "List of downlink interfaces or downlink interface ranges.",
+ "items": {
+ "type": "string",
+ "description": "Interface range or interface."
+ },
+ "title": "Downlink Interfaces"
}
},
"required": [
- "name"
+ "types",
+ "platforms"
],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
}
},
- "title": "Local Users"
+ "title": "Default Interfaces"
},
- "mac_address_table": {
- "type": "object",
- "description": "MAC address-table aging time.\nUse to change the EOS default of 300.\n",
- "properties": {
- "aging_time": {
- "type": "integer",
- "description": "Aging time in seconds 10-1000000.\nEnter 0 to disable aging.\n",
- "minimum": 0,
- "maximum": 1000000,
- "title": "Aging Time"
+ "default_node_types": {
+ "type": "array",
+ "description": "Uses hostname matches against a regular expression to determine the node type.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "node_type": {
+ "type": "string",
+ "description": "Resulting node type when regex matches.",
+ "title": "Node Type"
+ },
+ "match_hostnames": {
+ "type": "array",
+ "description": "Regular expressions to match against hostnames.",
+ "items": {
+ "type": "string",
+ "description": "Regex needs to match full hostname (i.e. is bounded by ^ and $ elements)."
+ },
+ "title": "Match Hostnames"
+ }
+ },
+ "required": [
+ "match_hostnames",
+ "node_type"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
}
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "MAC Address Table"
+ "title": "Default Node Types"
},
- "management_eapi": {
- "description": "Default is HTTPS management eAPI enabled.\nThe VRF is set to < mgmt_interface_vrf >.\n",
+ "design": {
"type": "object",
"properties": {
- "enable_http": {
- "type": "boolean",
- "default": false,
- "title": "Enable HTTP"
- },
- "enable_https": {
- "type": "boolean",
- "default": true,
- "title": "Enable Https"
- },
- "default_services": {
- "type": "boolean",
- "title": "Default Services"
+ "type": {
+ "type": "string",
+ "description": "By setting the design.type variable, the default node-types and templates described in these documents will be used.\n",
+ "enum": [
+ "l3ls-evpn",
+ "mpls",
+ "l2ls"
+ ],
+ "default": "l3ls-evpn",
+ "title": "Type"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Management Eapi"
+ "title": "Design"
},
- "mgmt_destination_networks": {
+ "enable_trunk_groups": {
+ "type": "boolean",
+ "description": "Enable Trunk Group support across eos_designs.\nWarning: Because of the nature of the EOS Trunk Group feature, enabling this is \"all or nothing\".\n*All* vlans and *all* trunks towards connected endpoints must be using trunk groups as well.\nIf trunk groups are not assigned to a trunk, no vlans will be enabled on that trunk.\nSee \"Details on enable_trunk_groups\" below before enabling this feature.\n",
+ "default": false,
+ "title": "Enable Trunk Groups"
+ },
+ "eos_designs_custom_templates": {
"type": "array",
- "description": "List of IPv4 prefixes to configure as static routes towards the OOB Management interface gateway.\nReplaces the default route.",
"items": {
- "type": "string",
- "description": "IPv4_address/Mask."
+ "type": "object",
+ "properties": {
+ "template": {
+ "type": "string",
+ "description": "Template file.",
+ "title": "Template"
+ },
+ "options": {
+ "description": "Template options.",
+ "type": "object",
+ "properties": {
+ "list_merge": {
+ "type": "string",
+ "description": "Merge strategy for lists.",
+ "default": "append_rp",
+ "title": "List Merge"
+ },
+ "strip_empty_keys": {
+ "type": "boolean",
+ "description": "Filter out keys from the generated output if value is null/none/undefined.",
+ "default": true,
+ "title": "Strip Empty Keys"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Options"
+ }
+ },
+ "required": [
+ "template"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
},
- "title": "Management Destination Networks"
- },
- "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'.",
- "title": "Management Gateway"
- },
- "mgmt_interface": {
- "type": "string",
- "default": "Management1",
- "description": "OOB Management interface.",
- "title": "Management Interface"
- },
- "mgmt_interface_description": {
- "type": "string",
- "description": "Management interface description.\n",
- "default": "oob_management",
- "title": "Management Interface Description"
- },
- "mgmt_interface_vrf": {
- "type": "string",
- "default": "MGMT",
- "description": "OOB Management VRF.",
- "title": "Management Interface VRF"
- },
- "mgmt_vrf_routing": {
- "type": "boolean",
- "default": false,
- "description": "Configure IP routing for the OOB Management VRF.",
- "title": "Management VRF Routing"
+ "title": "EOS Designs Custom Templates"
},
- "mlag_ibgp_peering_vrfs": {
+ "eos_designs_documentation": {
+ "description": "Control fabric documentation generation.\n",
"type": "object",
- "description": "On mlag leafs, an SVI interface is defined per vrf, to establish iBGP peering (required when there are MLAG leafs in topology).\nThe SVI id will be derived from the base vlan defined: mlag_ibgp_peering_vrfs.base_vlan + (vrf_id or vrf_vni) - 1.\nDepending on the values of vrf_id / vrf_vni it may be required to adjust the base_vlan to avoid overlaps or invalid vlan ids.\nThe SVI ip address derived from mlag_l3_peer_ipv4_pool is re-used across all iBGP peerings.\n",
"properties": {
- "base_vlan": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4093,
- "default": 3000,
- "title": "Base VLAN"
+ "connected_endpoints": {
+ "description": "Generate fabric-wide documentation for connected endpoints.\n",
+ "type": "boolean",
+ "default": false,
+ "title": "Connected Endpoints"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "MLAG Ibgp Peering VRFs"
+ "title": "EOS Designs Documentation"
},
- "name_servers": {
- "type": "array",
- "description": "List of DNS servers. The VRF is set to < mgmt_interface_vrf >.",
- "items": {
- "type": "string",
- "description": "IPv4 address"
- },
- "title": "Name Servers"
- },
- "network_ports": {
+ "event_handlers": {
"type": "array",
+ "description": "Gives the ability to monitor and react to Syslog messages.\nEvent Handlers provide a powerful and flexible tool that can be used to apply self-healing actions,\ncustomize the system behavior, and implement workarounds to problems discovered in the field.\n",
"items": {
"type": "object",
"properties": {
- "switches": {
- "type": "array",
- "description": "Regex matching the full hostname of one or more switches.\nThe regular expression must match the full hostname.\n",
- "items": {
- "type": "string"
- },
- "title": "Switches"
- },
- "switch_ports": {
- "type": "array",
- "description": "List of ranges using AVD range_expand syntax.\nFor example:\n\nswitch_ports:\n - Ethernet1\n - Ethernet2-48\n\nAll switch_ports ranges are expanded into individual port configurations.\n\nFor more details and examples of the `range_expand` syntax, see the [arista.avd.range_expand documentation](../../../plugins/README.md#range_expand-filter)\n",
- "items": {
- "type": "string"
- },
- "title": "Switch Ports"
- },
- "description": {
- "type": "string",
- "description": "Description to be used on all ports.",
- "title": "Description"
- },
- "speed": {
- "type": "string",
- "description": "Set adapter speed: `< interface_speed >`, `forced < interface_speed >`, `auto < interface_speed >`.\nIf not specified will be auto.\n",
- "title": "Speed"
- },
- "profile": {
+ "name": {
"type": "string",
- "description": "Port-profile name to inherit configuration.",
- "title": "Profile"
- },
- "enabled": {
- "type": "boolean",
- "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n",
- "default": true,
- "title": "Enabled"
+ "description": "Event Handler Name",
+ "title": "Name"
},
- "mode": {
+ "action_type": {
"type": "string",
"enum": [
- "access",
- "dot1q-tunnel",
- "trunk",
- "trunk phone"
+ "bash",
+ "increment",
+ "log"
],
- "description": "Interface mode.",
- "title": "Mode"
- },
- "mtu": {
- "type": "integer",
- "minimum": 68,
- "maximum": 65535,
- "title": "MTU"
- },
- "l2_mtu": {
- "type": "integer",
- "minimum": 68,
- "maximum": 9416,
- "description": "This should only be defined for platforms supporting the \"l2 mtu\" CLI command.",
- "title": "L2 MTU"
- },
- "native_vlan": {
- "type": "integer",
- "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n",
- "minimum": 1,
- "maximum": 4094,
- "title": "Native VLAN"
- },
- "native_vlan_tag": {
- "type": "boolean",
- "default": false,
- "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.",
- "title": "Native VLAN Tag"
- },
- "trunk_groups": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n",
- "title": "Trunk Groups"
- },
- "vlans": {
- "type": "string",
- "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.",
- "title": "VLANs"
+ "title": "Action Type"
},
- "spanning_tree_portfast": {
+ "action": {
"type": "string",
- "enum": [
- "edge",
- "network"
- ],
- "title": "Spanning Tree Portfast"
+ "description": "Command to execute\n",
+ "title": "Action"
},
- "spanning_tree_bpdufilter": {
- "type": "string",
- "enum": [
- "enabled",
- "disabled",
- "True",
- "False",
- "true",
- "false"
- ],
- "title": "Spanning Tree Bpdufilter"
+ "delay": {
+ "type": "integer",
+ "description": "Event-handler delay in seconds\n",
+ "title": "Delay"
},
- "spanning_tree_bpduguard": {
+ "trigger": {
"type": "string",
+ "description": "Configure event trigger condition.\n",
"enum": [
- "enabled",
- "disabled",
- "True",
- "False",
- "true",
- "false"
+ "on-logging",
+ "on-startup-config"
],
- "title": "Spanning Tree Bpduguard"
- },
- "flowcontrol": {
- "type": "object",
- "properties": {
- "received": {
- "type": "string",
- "enum": [
- "received",
- "send",
- "on"
- ],
- "title": "Received"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Flowcontrol"
+ "title": "Trigger"
},
- "qos_profile": {
+ "regex": {
"type": "string",
- "description": "QOS profile name",
- "title": "QOS Profile"
- },
- "ptp": {
- "type": "object",
- "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": false,
- "title": "Enabled"
- },
- "endpoint_role": {
- "type": "string",
- "default": "follower",
- "enum": [
- "bmca",
- "default",
- "follower"
- ],
- "title": "Endpoint Role"
- },
- "profile": {
- "type": "string",
- "default": "aes67-r16-2016",
- "enum": [
- "aes67",
- "aes67-r16-2016",
- "smpte2059-2"
- ],
- "title": "Profile"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PTP"
+ "description": "Regular expression to use for searching log messages. Required for on-logging trigger\n",
+ "title": "Regex"
},
- "sflow": {
+ "asynchronous": {
"type": "boolean",
- "description": "Configures sFlow on the interface. Overrides `fabric_sflow` setting.\n",
- "title": "Sflow"
- },
- "link_tracking": {
- "type": "object",
- "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "name": {
- "type": "string",
- "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n",
- "title": "Name"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Link Tracking"
- },
- "dot1x": {
- "type": "object",
- "description": "802.1x",
- "properties": {
- "port_control": {
- "type": "string",
- "enum": [
- "auto",
- "force-authorized",
- "force-unauthorized"
- ],
- "title": "Port Control"
- },
- "port_control_force_authorized_phone": {
- "type": "boolean",
- "title": "Port Control Force Authorized Phone"
- },
- "reauthentication": {
- "type": "boolean",
- "title": "Reauthentication"
- },
- "pae": {
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "authenticator"
- ],
- "title": "Mode"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PAE"
+ "default": false,
+ "description": "Set the action to be non-blocking.",
+ "title": "Asynchronous"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Event Handlers"
+ },
+ "evpn_ebgp_gateway_inter_domain": {
+ "type": "boolean",
+ "title": "EVPN Ebgp Gateway Inter Domain"
+ },
+ "evpn_ebgp_gateway_multihop": {
+ "description": "Default of 15, considering a large value to avoid BGP reachability issues in very complex DCI networks.\nAdapt the value for your specific topology.\n",
+ "type": "integer",
+ "default": 15,
+ "title": "EVPN Ebgp Gateway Multihop"
+ },
+ "evpn_ebgp_multihop": {
+ "description": "Default of 3, the recommended value for a 3 stage spine and leaf topology.\nSet to a higher value to allow for very large and complex topologies.\n",
+ "type": "integer",
+ "default": 3,
+ "title": "EVPN Ebgp Multihop"
+ },
+ "evpn_hostflap_detection": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "description": "If set to false it will disable EVPN host-flap detection.",
+ "type": "boolean",
+ "default": true,
+ "title": "Enabled"
+ },
+ "threshold": {
+ "description": "Minimum number of MAC moves that indicate a MAC duplication issue.",
+ "type": "integer",
+ "default": 5,
+ "title": "Threshold"
+ },
+ "window": {
+ "description": "Time (in seconds) to detect a MAC duplication issue.",
+ "type": "integer",
+ "default": 180,
+ "title": "Window"
+ },
+ "expiry_timeout": {
+ "description": "Time (in seconds) to purge a MAC duplication issue.",
+ "type": "integer",
+ "title": "Expiry Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Hostflap Detection"
+ },
+ "evpn_import_pruning": {
+ "description": "Enable VPN import pruning (Min. EOS 4.24.2F).\nThe Route Target extended communities carried by incoming VPN paths will be examined.\nIf none of those Route Targets have been configured for import, the path will be immediately discarded.\n",
+ "type": "boolean",
+ "default": false,
+ "title": "EVPN Import Pruning"
+ },
+ "evpn_multicast": {
+ "type": "boolean",
+ "description": "General Configuration required for EVPN Multicast. \"evpn_l2_multicast\" or \"evpn_l3_multicast\" must also be configured under the Network Services (tenants).\nRequires \"underlay_multicast: true\" and IGMP snooping enabled globally (default).\nFor MLAG devices Route Distinguisher must be unique since this feature will create multi-vtep configuration.\nWarning !!! For Trident3 based platforms i.e 7050X3, 7300X3, 720XP and 722XP\n The Following default platform setting will be configured: \"platform trident forwarding-table partition flexible exact-match 16384 l2-shared 98304 l3-shared 131072\"\n All forwarding agents will be restarted when this configuration is applied.\n You can tune the settings by overridding the default variable: \"platform_settings[platforms].trident_forwarding_table_partition:\"\n Please contact an Arista representative for help with determining the appropriate values for your environment.\n",
+ "default": false,
+ "title": "EVPN Multicast"
+ },
+ "evpn_overlay_bgp_rtc": {
+ "description": "Enable Route Target Membership Constraint Address Family on EVPN overlay BGP peerings (Min. EOS 4.25.1F).\nRequires use eBGP as overlay protocol.\n",
+ "type": "boolean",
+ "default": false,
+ "title": "EVPN Overlay BGP Rtc"
+ },
+ "evpn_prevent_readvertise_to_server": {
+ "description": "Configure route-map on eBGP sessions towards route-servers, where prefixes with the peer's ASN in the AS Path are filtered away.\nThis is very useful in large-scale networks, where convergence will be quicker by not returning all updates received\nfrom Route-server-1 to Router-server-2 just for Route-server-2 to throw them away because of AS Path loop detection.\n",
+ "type": "boolean",
+ "default": false,
+ "title": "EVPN Prevent Readvertise To Server"
+ },
+ "evpn_short_esi_prefix": {
+ "description": "Configure prefix for \"short_esi\" values.",
+ "type": "string",
+ "default": "0000:0000:",
+ "title": "EVPN Short Esi Prefix"
+ },
+ "evpn_vlan_aware_bundles": {
+ "description": "Enable vlan aware bundles for EVPN MAC-VRF.",
+ "type": "boolean",
+ "default": false,
+ "title": "EVPN VLAN Aware Bundles"
+ },
+ "fabric_evpn_encapsulation": {
+ "description": "Should be set to mpls for evpn-mpls scenario.",
+ "enum": [
+ "vxlan",
+ "mpls"
+ ],
+ "default": "vxlan",
+ "type": "string",
+ "title": "Fabric EVPN Encapsulation"
+ },
+ "fabric_ip_addressing": {
+ "type": "object",
+ "properties": {
+ "mlag": {
+ "type": "object",
+ "properties": {
+ "algorithm": {
+ "type": "string",
+ "default": "first_id",
+ "description": "This variable defines the Multi-chassis Link Aggregation (MLAG) algorithm used.\nEach MLAG link will have a /31 subnet with each subnet allocated from the relevant MLAG pool via a calculated offset.\nThe offset is calculated using one of the following algorithms:\n - first_id: `(mlag_primary_id - 1) * 2` where `mlag_primary_id` is the ID of the first node defined under the node_group.\n This allocation method will skip every other /31 subnet making it less space efficient than `odd_id`.\n - odd_id: `(odd_id - 1) / 2`. Requires the node_group to have a node with an odd ID and a node with an even ID.\n - same_subnet: the offset will always be zero.\n This allocation method will cause every MLAG link to be addressed with the same /31 subnet.\n",
+ "enum": [
+ "first_id",
+ "odd_id",
+ "same_subnet"
+ ],
+ "title": "Algorithm"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MLAG"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Fabric IP Addressing"
+ },
+ "fabric_name": {
+ "description": "Fabric Name, required to match Ansible Group name covering all devices in the Fabric, **must** be an inventory group name.",
+ "type": "string",
+ "title": "Fabric Name"
+ },
+ "hardware_counters": {
+ "type": "object",
+ "properties": {
+ "features": {
+ "type": "array",
+ "description": "This data model allows to configure the list of hardware counters feature\navailable on Arista platforms.\n\nThe `name` key accepts a list of valid_values which MUST be updated to support\nnew feature as they are released in EOS.\n\nThe available values of the different keys like 'direction' or 'address_type'\nare feature and hardware dependent and this model DOES NOT validate that the\ncombinations are valid. It is the responsability of the user of this data model\nto make sure that the rendered CLI is accepted by the targeted device.\n\nExamples:\n\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: ip\n direction: out\n layer3: true\n units_packets: true\n ```\n\n to render:\n ```eos\n hardware counter feature ip out layer3 units packets\n ```\n * Use:\n ```yaml\n hardware_counters:\n features:\n - name: route\n address_type: ipv4\n vrf: test\n prefix: 192.168.0.0/24\n ```\n\n to render:\n ```eos\n hardware counter feature route ipv4 vrf test 192.168.0.0/24\n ```\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "enum": [
+ "acl",
+ "decap-group",
+ "directflow",
+ "ecn",
+ "flow-spec",
+ "gre tunnel interface",
+ "ip",
+ "mpls interface",
+ "mpls lfib",
+ "mpls tunnel",
+ "multicast",
+ "nexthop",
+ "pbr",
+ "pdp",
+ "policing interface",
+ "qos",
+ "qos dual-rate-policer",
+ "route",
+ "routed-port",
+ "subinterface",
+ "tapagg",
+ "traffic-class",
+ "traffic-policy",
+ "vlan",
+ "vlan-interface",
+ "vni decap",
+ "vni encap",
+ "vtep decap",
+ "vtep encap"
+ ],
+ "title": "Name"
},
- "authentication_failure": {
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "allow",
- "drop"
- ],
- "title": "Action"
- },
- "allow_vlan": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4094,
- "title": "Allow VLAN"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Authentication Failure"
+ "direction": {
+ "type": "string",
+ "enum": [
+ "in",
+ "out",
+ "cpu"
+ ],
+ "description": "Most features support only 'in' and 'out'. Some like traffic-policy support 'cpu'.\nSome features DO NOT have any direction.\nThis validation IS NOT made by the schemas.\n",
+ "title": "Direction"
},
- "host_mode": {
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "multi-host",
- "single-host"
- ],
- "title": "Mode"
- },
- "multi_host_authenticated": {
- "type": "boolean",
- "title": "Multi Host Authenticated"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Host Mode"
+ "address_type": {
+ "type": "string",
+ "enum": [
+ "ipv4",
+ "ipv6",
+ "mac"
+ ],
+ "description": "Supported only for the following features:\n- acl: [ipv4, ipv6, mac] if direction is 'out'\n- multicast: [ipv4, ipv6]\n- route: [ipv4, ipv6]\nThis validation IS NOT made by the schemas.\n",
+ "title": "Address Type"
},
- "mac_based_authentication": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "always": {
- "type": "boolean",
- "title": "Always"
- },
- "host_mode_common": {
- "type": "boolean",
- "title": "Host Mode Common"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "MAC Based Authentication"
- },
- "timeout": {
- "type": "object",
- "properties": {
- "idle_host": {
- "type": "integer",
- "minimum": 10,
- "maximum": 65535,
- "title": "Idle Host"
- },
- "quiet_period": {
- "type": "integer",
- "minimum": 1,
- "maximum": 65535,
- "title": "Quiet Period"
- },
- "reauth_period": {
- "type": "string",
- "description": "Range 60-4294967295 or \"server\".",
- "title": "Reauth Period"
- },
- "reauth_timeout_ignore": {
- "type": "boolean",
- "title": "Reauth Timeout Ignore"
- },
- "tx_period": {
- "type": "integer",
- "minimum": 1,
- "maximum": 65535,
- "title": "TX Period"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Timeout"
- },
- "reauthorization_request_limit": {
- "type": "integer",
- "minimum": 1,
- "maximum": 10,
- "title": "Reauthorization Request Limit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "dot1x"
- },
- "poe": {
- "type": "object",
- "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.",
- "properties": {
- "disabled": {
+ "layer3": {
"type": "boolean",
- "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
- "default": false,
- "title": "Disabled"
+ "description": "Supported only for the 'ip' feature\n",
+ "title": "Layer3"
},
- "priority": {
+ "vrf": {
"type": "string",
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
- "title": "Priority"
- },
- "reboot": {
- "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Reboot"
- },
- "link_down": {
- "description": "Set the PoE power behavior for a PoE port when the port goes down",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- },
- "power_off_delay": {
- "type": "integer",
- "minimum": 1,
- "maximum": 86400,
- "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
- "title": "Power Off Delay"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Link Down"
- },
- "shutdown": {
- "description": "Set the PoE power behavior for a PoE port when the port is admin down",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Shutdown"
- },
- "limit": {
- "type": "object",
- "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
- "properties": {
- "class": {
- "type": "integer",
- "minimum": 0,
- "maximum": 8,
- "title": "Class"
- },
- "watts": {
- "type": "string",
- "title": "Watts"
- },
- "fixed": {
- "type": "boolean",
- "description": "Set to ignore hardware classification",
- "title": "Fixed"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Limit"
+ "description": "Supported only for the 'route' feature.\nThis validation IS NOT made by the schemas.\n",
+ "title": "VRF"
},
- "negotiation_lldp": {
- "type": "boolean",
- "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
- "title": "Negotiation LLDP"
+ "prefix": {
+ "type": "string",
+ "description": "Supported only for the 'route' feature.\nMandatory for the 'route' feature.\nThis validation IS NOT made by the schemas.\n",
+ "title": "Prefix"
},
- "legacy_detect": {
+ "units_packets": {
"type": "boolean",
- "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
- "title": "Legacy Detect"
+ "title": "Units Packets"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
+ }
+ },
+ "title": "Features"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Hardware Counters"
+ },
+ "internal_vlan_order": {
+ "type": "object",
+ "description": "Internal vlan allocation order and range.",
+ "properties": {
+ "allocation": {
+ "type": "string",
+ "enum": [
+ "ascending",
+ "descending"
+ ],
+ "title": "Allocation"
+ },
+ "range": {
+ "type": "object",
+ "properties": {
+ "beginning": {
+ "type": "integer",
+ "description": "First VLAN ID.",
+ "minimum": 2,
+ "maximum": 4094,
+ "title": "Beginning"
},
- "title": "PoE"
+ "ending": {
+ "type": "integer",
+ "description": "Last VLAN ID.",
+ "minimum": 2,
+ "maximum": 4094,
+ "title": "Ending"
+ }
},
- "storm_control": {
- "type": "object",
- "description": "Storm control settings applied on port toward the endpoint.",
- "properties": {
- "all": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
- },
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "All"
- },
- "broadcast": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
- },
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Broadcast"
+ "required": [
+ "beginning",
+ "ending"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Range"
+ }
+ },
+ "required": [
+ "allocation"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "default": {
+ "allocation": "ascending",
+ "range": {
+ "beginning": 1006,
+ "ending": 1199
+ }
+ },
+ "title": "Internal VLAN Order"
+ },
+ "ipv6_mgmt_destination_networks": {
+ "description": "List of IPv6 prefixes to configure as static routes towards the OOB IPv6 Management interface gateway.\nReplaces the default route.\n",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv6_network/Mask."
+ },
+ "title": "IPv6 Management Destination Networks"
+ },
+ "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'.",
+ "title": "IPv6 Management Gateway"
+ },
+ "is_deployed": {
+ "description": "Is device already deployed in the fabric.\nWhen set to false, interfaces toward this device may be shutdown depending on the `shutdown_interfaces_towards_undeployed_peers` setting.\nFurthermore `eos_config_deploy_cvp` will not attempt to move or apply configurations to the device.\n",
+ "type": "boolean",
+ "default": true,
+ "title": "IS Deployed"
+ },
+ "isis_advertise_passive_only": {
+ "type": "boolean",
+ "default": false,
+ "title": "ISIS Advertise Passive Only"
+ },
+ "isis_area_id": {
+ "type": "string",
+ "default": "49.0001",
+ "title": "ISIS Area ID"
+ },
+ "isis_default_circuit_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "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.",
+ "title": "ISIS Default Circuit Type"
+ },
+ "isis_default_is_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "level-2"
+ ],
+ "default": "level-2",
+ "title": "ISIS Default IS Type"
+ },
+ "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.",
+ "title": "ISIS Default Metric"
+ },
+ "isis_maximum_paths": {
+ "description": "Number of path to configure in ECMP for ISIS.",
+ "type": "integer",
+ "title": "ISIS Maximum Paths"
+ },
+ "isis_ti_lfa": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": false,
+ "title": "Enabled"
+ },
+ "protection": {
+ "type": "string",
+ "enum": [
+ "link",
+ "node"
+ ],
+ "title": "Protection"
+ },
+ "local_convergence_delay": {
+ "description": "Local convergence delay in milliseconds.",
+ "type": "integer",
+ "default": 10000,
+ "title": "Local Convergence Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "ISIS TI LFA"
+ },
+ "l3_edge": {
+ "type": "object",
+ "properties": {
+ "p2p_links_ip_pools": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "P2P pool name.",
+ "title": "Name"
},
- "multicast": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
- },
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Multicast"
+ "ipv4_pool": {
+ "type": "string",
+ "description": "IPv4 address/Mask.",
+ "title": "IPv4 Pool"
},
- "unknown_unicast": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
- },
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Unknown Unicast"
+ "prefix_size": {
+ "type": "integer",
+ "description": "Subnet mask size.",
+ "default": 31,
+ "minimum": 8,
+ "maximum": 31,
+ "title": "Prefix Size"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Storm Control"
+ "required": [
+ "name"
+ ]
},
- "monitor_sessions": {
- "type": "array",
- "description": "Used to define switchports as source or destination for monitoring sessions.",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Session name.",
- "title": "Name"
- },
- "role": {
- "type": "string",
- "enum": [
- "source",
- "destination"
- ],
- "title": "Role"
- },
- "source_settings": {
- "type": "object",
- "properties": {
- "direction": {
- "type": "string",
- "enum": [
- "rx",
- "tx",
- "both"
- ],
- "title": "Direction"
- },
- "access_group": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "ip",
- "ipv6",
- "mac"
- ],
- "title": "Type"
- },
- "name": {
- "description": "ACL name.",
- "type": "string",
- "title": "Name"
- },
- "priority": {
- "type": "integer",
- "title": "Priority"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Access Group"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Source Settings"
- },
- "session_settings": {
- "type": "object",
- "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n",
- "properties": {
- "encapsulation_gre_metadata_tx": {
- "type": "boolean",
- "title": "Encapsulation Gre Metadata TX"
- },
- "header_remove_size": {
- "type": "integer",
- "description": "Number of bytes to remove from header.",
- "title": "Header Remove Size"
- },
- "access_group": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "ip",
- "ipv6",
- "mac"
- ],
- "title": "Type"
- },
- "name": {
- "description": "ACL name.",
- "type": "string",
- "title": "Name"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Access Group"
- },
- "rate_limit_per_ingress_chip": {
- "type": "string",
- "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
- "title": "Rate Limit Per Ingress Chip"
- },
- "rate_limit_per_egress_chip": {
- "type": "string",
- "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
- "title": "Rate Limit Per Egress Chip"
- },
- "sample": {
- "type": "integer",
- "title": "Sample"
- },
- "truncate": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "size": {
- "type": "integer",
- "description": "Size in bytes",
- "title": "Size"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Truncate"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Session Settings"
- }
- },
- "required": [
- "name"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Monitor Sessions"
- },
- "ethernet_segment": {
+ "title": "P2P Links IP Pools"
+ },
+ "p2p_links_profiles": {
+ "type": "array",
+ "items": {
"type": "object",
- "description": "Settings for all or single-active EVPN multihoming.",
"properties": {
- "short_esi": {
+ "name": {
"type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n",
- "title": "Short Esi"
+ "description": "P2P profile name. Any variable supported under p2p_links can be inherited from a profile.",
+ "title": "Name"
},
- "redundancy": {
+ "id": {
+ "type": "integer",
+ "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n",
+ "title": "ID"
+ },
+ "speed": {
"type": "string",
- "enum": [
- "all-active",
- "single-active"
- ],
- "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n",
- "title": "Redundancy"
+ "description": "The values can be speed or auto speed or forced speed.",
+ "title": "Speed"
},
- "designated_forwarder_algorithm": {
+ "ip_pool": {
"type": "string",
- "enum": [
- "auto",
- "modulus",
- "preference"
- ],
- "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n",
- "title": "Designated Forwarder Algorithm"
+ "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.",
+ "title": "IP Pool"
},
- "designated_forwarder_preferences": {
+ "subnet": {
+ "type": "string",
+ "description": "IPv4 address/Mask. Subnet used on this P2P link.",
+ "title": "Subnet"
+ },
+ "ip": {
"type": "array",
- "description": "Manual preference as described above, required only for preference algorithm.",
+ "description": "Specific IP addresses used on this P2P link.",
"items": {
- "type": "string"
+ "type": "string",
+ "description": "Node IPv4 address/Mask."
},
- "title": "Designated Forwarder Preferences"
+ "title": "IP"
},
- "dont_preempt": {
+ "ipv6_enable": {
"type": "boolean",
- "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.",
- "title": "Dont Preempt"
- }
- },
- "required": [
- "short_esi"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Ethernet Segment"
- },
- "port_channel": {
- "type": "object",
- "description": "Used for port-channel adapter.",
- "properties": {
- "mode": {
- "type": "string",
- "description": "Port-Channel Mode.",
- "enum": [
- "active",
- "passive",
- "on"
- ],
- "title": "Mode"
+ "default": false,
+ "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).",
+ "title": "IPv6 Enable"
},
- "channel_id": {
- "type": "integer",
- "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n",
- "title": "Channel ID"
+ "nodes": {
+ "type": "array",
+ "description": "Nodes where this link should be configured.",
+ "items": {
+ "type": "string",
+ "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n"
+ },
+ "title": "Nodes"
},
- "description": {
- "type": "string",
- "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n",
- "title": "Description"
+ "interfaces": {
+ "type": "array",
+ "description": "Interfaces where this link should be configured and Required unless using port-channels.",
+ "items": {
+ "type": "string",
+ "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n"
+ },
+ "title": "Interfaces"
},
- "enabled": {
+ "as": {
+ "type": "array",
+ "description": "AS numbers for BGP.\nRequired with bgp peering.\n",
+ "items": {
+ "type": "string",
+ "description": "The values can be like [\"node_a_as\", \"node_b_as\"]."
+ },
+ "title": "As"
+ },
+ "descriptions": {
+ "type": "array",
+ "description": "Interface description.",
+ "items": {
+ "type": "string"
+ },
+ "title": "Descriptions"
+ },
+ "include_in_underlay_protocol": {
"type": "boolean",
"default": true,
- "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n",
- "title": "Enabled"
+ "description": "Add this interface to underlay routing protocol.",
+ "title": "Include In Underlay Protocol"
},
- "short_esi": {
+ "isis_hello_padding": {
+ "type": "boolean",
+ "default": false,
+ "title": "ISIS Hello Padding"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_circuit_type": {
"type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.",
- "deprecated": true,
- "title": "Short Esi"
+ "enum": [
+ "level-1",
+ "level-2",
+ "level-1-2"
+ ],
+ "title": "ISIS Circuit Type"
},
- "lacp_fallback": {
+ "isis_authentication_mode": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "text"
+ ],
+ "title": "ISIS Authentication Mode"
+ },
+ "isis_authentication_key": {
+ "type": "string",
+ "description": "Type-7 encrypted password.",
+ "title": "ISIS Authentication Key"
+ },
+ "mpls_ip": {
+ "type": "boolean",
+ "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.",
+ "title": "MPLS IP"
+ },
+ "mpls_ldp": {
+ "type": "boolean",
+ "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.",
+ "title": "MPLS LDP"
+ },
+ "mtu": {
+ "type": "integer",
+ "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.",
+ "title": "MTU"
+ },
+ "bfd": {
+ "type": "boolean",
+ "default": false,
+ "description": "Enable BFD (only considered for BGP).",
+ "title": "BFD"
+ },
+ "ptp": {
+ "description": "PTP parameters.",
"type": "object",
- "description": "LACP fallback configuration.",
"properties": {
- "mode": {
- "type": "string",
- "enum": [
- "static"
- ],
- "description": "Currently only static mode is supported.",
- "title": "Mode"
- },
- "timeout": {
- "type": "integer",
- "description": "Timeout in seconds. EOS default is 90 seconds.",
- "title": "Timeout"
+ "enabled": {
+ "type": "boolean",
+ "default": false,
+ "description": "Enable PTP.",
+ "title": "Enabled"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "LACP Fallback"
+ "title": "PTP"
},
- "lacp_timer": {
+ "sflow": {
+ "type": "boolean",
+ "description": "Enable sFlow. Overrides `fabric_sflow` setting.",
+ "title": "Sflow"
+ },
+ "qos_profile": {
+ "type": "string",
+ "description": "QOS service profile.",
+ "title": "QOS Profile"
+ },
+ "macsec_profile": {
+ "type": "string",
+ "description": "MAC security profile.",
+ "title": "Macsec Profile"
+ },
+ "port_channel": {
+ "description": "Port-channel parameters.",
"type": "object",
- "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".",
"properties": {
"mode": {
"type": "string",
- "enum": [
- "normal",
- "fast"
- ],
- "description": "LACP mode for interface members.",
+ "default": "active",
"title": "Mode"
},
- "multiplier": {
- "type": "integer",
- "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.",
- "title": "Multiplier"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "LACP Timer"
- },
- "subinterfaces": {
- "type": "array",
- "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n",
- "items": {
- "type": "object",
- "properties": {
- "number": {
- "type": "integer",
- "description": "Subinterface number",
- "title": "Number"
- },
- "short_esi": {
- "type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\"\nRequired for multihomed port-channels with subinterfaces\n",
- "title": "Short Esi"
- },
- "vlan_id": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4094,
- "description": "VLAN ID to bridge.\nDefault is subinterface number.\n",
- "title": "VLAN ID"
- },
- "encapsulation_vlan": {
+ "nodes_child_interfaces": {
+ "type": "array",
+ "items": {
"type": "object",
- "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n",
"properties": {
- "client_dot1q": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4094,
- "title": "Client Dot1Q"
+ "node": {
+ "type": "string",
+ "title": "Node"
+ },
+ "interfaces": {
+ "type": "array",
+ "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].",
+ "items": {
+ "type": "string"
+ },
+ "title": "Interfaces"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Encapsulation VLAN"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "required": [
+ "node"
+ ]
+ },
+ "title": "Nodes Child Interfaces"
}
},
- "title": "Subinterfaces"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Port Channel"
},
"raw_eos_cli": {
"type": "string",
- "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.",
+ "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.",
"title": "Raw EOS CLI"
},
"structured_config": {
"type": "object",
- "description": "Custom structured config added under port_channel_interfaces. for eos_cli_config_gen.",
+ "description": "Custom structured config for interfaces\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.",
"title": "Structured Config"
}
},
@@ -3330,358 +3849,304 @@
"patternProperties": {
"^_.+$": {}
},
- "title": "Port Channel"
- },
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.",
- "title": "Raw EOS CLI"
+ "required": [
+ "name"
+ ]
},
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under ethernet_interfaces. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Network Ports"
- },
- "network_services_keys": {
- "type": "array",
- "description": "Network Services can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`network_services_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "title": "Name"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "title": "P2P Links Profiles"
},
- "required": [
- "name"
- ]
- },
- "default": [
- {
- "name": "tenants"
- }
- ],
- "title": "Network Services Keys"
- },
- "node_type_keys": {
- "type": "array",
- "description": "Define Node Type Keys, to specify the properties of each node type in the fabric.\nThis allows for complete customization of the fabric layout and functionality.\n`node_type_keys` should be defined in top level group_var for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "title": "Key"
- },
- "type": {
- "type": "string",
- "description": "Type value matching this node_type_key.",
- "title": "Type"
- },
- "connected_endpoints": {
- "type": "boolean",
- "default": false,
- "description": "Are endpoints connected to this node type.",
- "title": "Connected Endpoints"
- },
- "default_evpn_role": {
- "type": "string",
- "enum": [
- "none",
- "client",
- "server"
- ],
- "default": "none",
- "description": "Default evpn_role. Can be overridden in topology vars.",
- "title": "Default EVPN Role"
- },
- "default_ptp_priority1": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255,
- "default": 127,
- "description": "Default PTP priority 1",
- "title": "Default PTP Priority1"
- },
- "default_underlay_routing_protocol": {
- "type": "string",
- "default": "ebgp",
- "enum": [
- "ebgp",
- "ibgp",
- "ospf",
- "ospf-ldp",
- "isis",
- "isis-sr",
- "isis-ldp",
- "isis-sr-ldp",
- "none"
- ],
- "description": "Set the default underlay routing_protocol.\nCan be overridden by setting \"underlay_routing_protocol\" host/group_vars.\n",
- "title": "Default Underlay Routing Protocol"
- },
- "default_overlay_routing_protocol": {
- "type": "string",
- "default": "ebgp",
- "enum": [
- "ebgp",
- "ibgp",
- "her",
- "cvx",
- "none"
- ],
- "description": "Set the default overlay routing_protocol.\nCan be overridden by setting \"overlay_routing_protocol\" host/group_vars.\n",
- "title": "Default Overlay Routing Protocol"
- },
- "default_mpls_overlay_role": {
- "type": "string",
- "enum": [
- "client",
- "server",
- "none"
- ],
- "description": "Set the default mpls overlay role.\nActing role in overlay control plane.\n",
- "title": "Default MPLS Overlay Role"
- },
- "default_overlay_address_families": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "evpn",
- "vpn-ipv4",
- "vpn-ipv6"
- ]
- },
- "description": "Set the default overlay address families.\n",
- "title": "Default Overlay Address Families"
- },
- "default_evpn_encapsulation": {
- "type": "string",
- "enum": [
- "mpls",
- "vxlan"
- ],
- "description": "Set the default evpn encapsulation.\n",
- "title": "Default EVPN Encapsulation"
- },
- "mlag_support": {
- "type": "boolean",
- "default": false,
- "description": "Can this node type support mlag.",
- "title": "MLAG Support"
- },
- "network_services": {
- "description": "Will network services be deployed on this node type.",
+ "p2p_links": {
+ "type": "array",
+ "items": {
"type": "object",
"properties": {
- "l1": {
- "type": "boolean",
- "default": false,
- "description": "??",
- "title": "L1"
- },
- "l2": {
- "type": "boolean",
- "default": false,
- "description": "Vlans",
- "title": "L2"
+ "nodes": {
+ "type": "array",
+ "description": "Nodes where this link should be configured.",
+ "items": {
+ "type": "string",
+ "description": "The values can be < node_a >, < node_b >.\nex.- [ core-1-isis-sr-ldp, core-2-ospf-ldp ].\n"
+ },
+ "title": "Nodes"
},
- "l3": {
- "type": "boolean",
- "default": false,
- "description": "VRFs, SVIs (if l2 is true).\nOnly supported with underlay_router.\n",
- "title": "L3"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Network Services"
- },
- "underlay_router": {
- "type": "boolean",
- "default": true,
- "description": "Is this node type a L3 device.",
- "title": "Underlay Router"
- },
- "uplink_type": {
- "type": "string",
- "enum": [
- "p2p",
- "port-channel"
- ],
- "default": "p2p",
- "description": "Uplinks must be p2p if \"vtep\" or \"underlay_router\" is true.",
- "title": "Uplink Type"
- },
- "vtep": {
- "type": "boolean",
- "default": false,
- "description": "Is this switch an EVPN VTEP.",
- "title": "Vtep"
- },
- "mpls_lsr": {
- "type": "boolean",
- "default": false,
- "description": "Is this switch an MPLS LSR.",
- "title": "MPLS Lsr"
- },
- "ip_addressing": {
- "type": "object",
- "description": "Override ip_addressing templates.",
- "properties": {
- "python_module": {
+ "profile": {
"type": "string",
- "description": "Custom Python Module to import for IP addressing.",
- "title": "Python Module"
+ "description": "P2P profile name. Profile defined under p2p_profiles.",
+ "title": "Profile"
},
- "python_class_name": {
- "type": "string",
- "description": "Name of Custom Python Class to import for IP addressing.",
- "title": "Python Class Name"
+ "id": {
+ "type": "integer",
+ "description": "Unique id per subnet_summary. Used to calculate ip addresses.\nRequired with ip_pool. ID starting from 1.\n",
+ "title": "ID"
},
- "router_id": {
+ "speed": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Router ID"
+ "description": "The values can be speed or auto speed or forced speed.",
+ "title": "Speed"
},
- "router_id_ipv6": {
+ "ip_pool": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Router ID IPv6"
+ "description": "P2P pool name. IP Pool defined under p2p_links_ip_pools. A /31 will be taken from the pool per P2P link.",
+ "title": "IP Pool"
},
- "mlag_ip_primary": {
+ "subnet": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG IP Primary"
+ "description": "IPv4 address/Mask. Subnet used on this P2P link.",
+ "title": "Subnet"
},
- "mlag_ip_secondary": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG IP Secondary"
+ "ip": {
+ "type": "array",
+ "description": "Specific IP addresses used on this P2P link.",
+ "items": {
+ "type": "string",
+ "description": "Node IPv4 address/Mask."
+ },
+ "title": "IP"
},
- "mlag_l3_ip_primary": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG L3 IP Primary"
+ "ipv6_enable": {
+ "type": "boolean",
+ "default": false,
+ "description": "Allows turning on ipv6 for the link or profile (also autodetected based on underlay_rfc5549 and include_in_underlay_protocol).",
+ "title": "IPv6 Enable"
},
- "mlag_l3_ip_secondary": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG L3 IP Secondary"
+ "interfaces": {
+ "type": "array",
+ "description": "Interfaces where this link should be configured and Required unless using port-channels.",
+ "items": {
+ "type": "string",
+ "description": "The value can be like < node_a_interface >, < node_b_interface >.\nex. - [ Ethernet2, Ethernet2 ].\n"
+ },
+ "title": "Interfaces"
},
- "mlag_ibgp_peering_ip_primary": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG Ibgp Peering IP Primary"
+ "as": {
+ "type": "array",
+ "description": "AS numbers for BGP.\nRequired with bgp peering.\n",
+ "items": {
+ "type": "string",
+ "description": "The values can be like [\"node_a_as\", \"node_b_as\"]."
+ },
+ "title": "As"
},
- "mlag_ibgp_peering_ip_secondary": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG Ibgp Peering IP Secondary"
+ "descriptions": {
+ "type": "array",
+ "description": "Interface description.",
+ "items": {
+ "type": "string"
+ },
+ "title": "Descriptions"
},
- "p2p_uplinks_ip": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "P2P Uplinks IP"
+ "include_in_underlay_protocol": {
+ "type": "boolean",
+ "default": true,
+ "description": "Add this interface to underlay routing protocol.",
+ "title": "Include In Underlay Protocol"
},
- "p2p_uplinks_peer_ip": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "P2P Uplinks Peer IP"
+ "isis_hello_padding": {
+ "type": "boolean",
+ "default": false,
+ "title": "ISIS Hello Padding"
},
- "vtep_ip_mlag": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Vtep IP MLAG"
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
},
- "vtep_ip": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Vtep IP"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "IP Addressing"
- },
- "interface_descriptions": {
- "type": "object",
- "description": "Override interface_descriptions templates\nIf description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.\n",
- "properties": {
- "python_module": {
+ "isis_circuit_type": {
"type": "string",
- "description": "Custom Python Module to import for interface descriptions.",
- "title": "Python Module"
+ "enum": [
+ "level-1",
+ "level-2",
+ "level-1-2"
+ ],
+ "title": "ISIS Circuit Type"
},
- "python_class_name": {
+ "isis_authentication_mode": {
"type": "string",
- "description": "Name of Custom Python Class to import for interface descriptions.",
- "title": "Python Class Name"
+ "enum": [
+ "md5",
+ "text"
+ ],
+ "title": "ISIS Authentication Mode"
},
- "underlay_ethernet_interfaces": {
+ "isis_authentication_key": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Underlay Ethernet Interfaces"
+ "description": "Type-7 encrypted password.",
+ "title": "ISIS Authentication Key"
},
- "underlay_port_channel_interfaces": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Underlay Port Channel Interfaces"
+ "mpls_ip": {
+ "type": "boolean",
+ "description": "MPLS parameters. Default value is true if switch.mpls_lsr is true.",
+ "title": "MPLS IP"
},
- "mlag_ethernet_interfaces": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG Ethernet Interfaces"
+ "mpls_ldp": {
+ "type": "boolean",
+ "description": "MPLS parameters. Default value is true for ldp underlay variants, otherwise false.",
+ "title": "MPLS LDP"
},
- "mlag_port_channel_interfaces": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "MLAG Port Channel Interfaces"
+ "mtu": {
+ "type": "integer",
+ "description": "MTU for this P2P link. Default value same as p2p_uplinks_mtu.",
+ "title": "MTU"
},
- "connected_endpoints_ethernet_interfaces": {
- "type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Connected Endpoints Ethernet Interfaces"
+ "bfd": {
+ "type": "boolean",
+ "default": false,
+ "description": "Enable BFD (only considered for BGP).",
+ "title": "BFD"
},
- "connected_endpoints_port_channel_interfaces": {
+ "ptp": {
+ "description": "PTP parameters.",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": false,
+ "description": "Enable PTP.",
+ "title": "Enabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "sflow": {
+ "type": "boolean",
+ "description": "Enable sFlow. Overrides `fabric_sflow` setting.",
+ "title": "Sflow"
+ },
+ "qos_profile": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Connected Endpoints Port Channel Interfaces"
+ "description": "QOS service profile.",
+ "title": "QOS Profile"
},
- "overlay_loopback_interface": {
+ "macsec_profile": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Overlay Loopback Interface"
+ "description": "MAC security profile.",
+ "title": "Macsec Profile"
},
- "vtep_loopback_interface": {
+ "port_channel": {
+ "description": "Port-channel parameters.",
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "default": "active",
+ "title": "Mode"
+ },
+ "nodes_child_interfaces": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "node": {
+ "type": "string",
+ "title": "Node"
+ },
+ "interfaces": {
+ "type": "array",
+ "description": "List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].",
+ "items": {
+ "type": "string"
+ },
+ "title": "Interfaces"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "node"
+ ]
+ },
+ "title": "Nodes Child Interfaces"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Port Channel"
+ },
+ "raw_eos_cli": {
"type": "string",
- "description": "Path to Custom J2 template.",
- "title": "Vtep Loopback Interface"
+ "description": "EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config for interfaces\nNote! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.",
+ "title": "Structured Config"
}
},
+ "required": [
+ "nodes"
+ ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- },
- "title": "Interface Descriptions"
+ }
+ },
+ "title": "P2P Links"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "L3 Edge"
+ },
+ "local_users": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Username",
+ "type": "string",
+ "title": "Name"
+ },
+ "disabled": {
+ "type": "boolean",
+ "description": "If true, the user will be removed and all other settings are ignored.\nUseful for removing the default \"admin\" user.\n",
+ "title": "Disabled"
+ },
+ "privilege": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 15,
+ "description": "Initial privilege level with local EXEC authorization.\n",
+ "title": "Privilege"
+ },
+ "role": {
+ "type": "string",
+ "description": "EOS RBAC Role to be assigned to the user such as \"network-admin\" or \"network-operator\"\n",
+ "title": "Role"
+ },
+ "sha512_password": {
+ "type": "string",
+ "description": "SHA512 Hash of Password\nMust be the hash of the password. By default EOS salts the password with the username, so the simplest is to generate the hash on an EOS device using the same username.\n",
+ "title": "SHA512 Password"
+ },
+ "no_password": {
+ "type": "boolean",
+ "description": "If set a password will not be configured for this user. \"sha512_password\" MUST not be defined for this user.\n",
+ "title": "No Password"
+ },
+ "ssh_key": {
+ "type": "string",
+ "title": "SSH Key"
+ },
+ "shell": {
+ "type": "string",
+ "description": "Specify shell for the user\n",
+ "enum": [
+ "/bin/bash",
+ "/bin/sh",
+ "/sbin/nologin"
+ ],
+ "title": "Shell"
}
},
"additionalProperties": false,
@@ -3689,439 +4154,10015 @@
"^_.+$": {}
},
"required": [
- "key"
+ "name"
]
},
- "title": "Node Type Keys"
- },
- "only_local_vlan_trunk_groups": {
- "type": "boolean",
- "description": "A vlan can have many trunk_groups assigned.\nTo avoid unneeded configuration changes on all leaf switches when a new trunk group is added,\nthis feature will only configure the vlan trunk groups matched with local connected_endpoints.\nSee \"Details on only_local_vlan_trunk_groups\" below.\nRequires \"enable_trunk_groups: true\".\n",
- "default": false,
- "title": "Only Local VLAN Trunk Groups"
+ "title": "Local Users"
},
- "overlay_cvx_servers": {
- "description": "List of CVX vxlan overlay controllers.\nRequired if overlay_routing_protocol == CVX.\nCVX servers (VMs) are peering using their management interface, so mgmt_ip must be set for all CVX servers.\n",
- "type": "array",
- "items": {
- "type": "string",
- "description": "'inventory_hostname' of CVX server"
+ "mac_address_table": {
+ "type": "object",
+ "description": "MAC address-table aging time.\nUse to change the EOS default of 300.\n",
+ "properties": {
+ "aging_time": {
+ "type": "integer",
+ "description": "Aging time in seconds 10-1000000.\nEnter 0 to disable aging.\n",
+ "minimum": 0,
+ "maximum": 1000000,
+ "title": "Aging Time"
+ }
},
- "title": "Overlay CVX Servers"
- },
- "overlay_her_flood_list_per_vni": {
- "type": "boolean",
- "description": "When using Head-End Replication, configure flood-lists per VNI.\nBy default HER will be configured with a common flood-list containing all VTEPs.\nThis behavior can be changed to per-VNI flood-lists by setting `overlay_her_flood_list_per_vni: true`.\nThis will make `eos_designs` consider configured VLANs per VTEP, and only include the relevant VTEPs to each VNI's flood-list.\n",
- "default": false,
- "title": "Overlay Her Flood List Per Vni"
- },
- "overlay_her_flood_list_scope": {
- "type": "string",
- "description": "When using Head-End Replication, set the scope of flood-lists to Fabric or DC.\nBy default all VTEPs in the Fabric (part of the inventory group referenced by \"fabric_name\") are added to the flood-lists.\nThis can be changed to all VTEPs in the DC (sharing the same \"dc_name\" value).\nThis is useful if Border Leaf switches are dividing the VXLAN overlay into separate domains.\n",
- "enum": [
- "fabric",
- "dc"
- ],
- "default": "fabric",
- "title": "Overlay Her Flood List Scope"
- },
- "overlay_loopback_description": {
- "description": "Customize the description on overlay interface Loopback0.",
- "type": "string",
- "title": "Overlay Loopback Description"
- },
- "overlay_mlag_rfc5549": {
- "description": "IPv6 Unnumbered for MLAG iBGP connections.\nRequires \"underlay_rfc5549: true\".\n",
- "type": "boolean",
- "default": false,
- "title": "Overlay MLAG Rfc5549"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Address Table"
},
- "overlay_rd_type": {
+ "management_eapi": {
+ "description": "Default is HTTPS management eAPI enabled.\nThe VRF is set to < mgmt_interface_vrf >.\n",
"type": "object",
- "description": "Configuration options for the Administrator subfield (first part of RD) and the Assigned Number subfield (second part of RD).\n\nBy default Route Distinguishers (RD) are set to:\n- `:` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VRFs.\n\nNote:\nRD is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using loopback or 32-bit ASN/number the assigned number can only be a 16-bit number. This may be a problem with large VNIs.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n",
"properties": {
- "admin_subfield": {
- "type": "string",
- "description": "The method for deriving RD Administrator subfield (first part of RD):\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n",
- "default": "overlay_loopback_ip",
- "title": "Admin Subfield"
- },
- "admin_subfield_offset": {
- "type": "string",
- "description": "Offset can only be used if admin_subfield is an integer between <0-4294967295> or 'switch_id'.\nTotal value of admin_subfield + admin_subfield_offset must be <= 4294967295.\n",
- "title": "Admin Subfield Offset"
- },
- "vrf_admin_subfield": {
- "type": "string",
- "description": "The method for deriving RD Administrator subfield (first part of RD) for VRF services:\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n",
- "title": "VRF Admin Subfield"
+ "enable_http": {
+ "type": "boolean",
+ "default": false,
+ "title": "Enable HTTP"
},
- "vrf_admin_subfield_offset": {
- "type": "string",
- "description": "Offset can only be used if 'vrf_admin_subfield' is an integer between <0-4294967295> or 'switch_id'.\nTotal value of 'vrf_admin_subfield' + 'vrf_admin_subfield_offset' must be <= 4294967295.\n",
- "title": "VRF Admin Subfield Offset"
+ "enable_https": {
+ "type": "boolean",
+ "default": true,
+ "title": "Enable Https"
},
- "vlan_assigned_number_subfield": {
- "type": "string",
- "enum": [
- "mac_vrf_id",
- "mac_vrf_vni",
- "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).",
- "title": "VLAN Assigned Number Subfield"
+ "default_services": {
+ "type": "boolean",
+ "title": "Default Services"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Overlay Rd Type"
+ "title": "Management Eapi"
},
- "overlay_routing_protocol": {
- "description": "- The following overlay routing protocols are supported:\n - eBGP: Configures fabric with eBGP, default for l3ls-evpn design.\n - iBGP: Configured fabric with iBGP, only supported with OSPF or ISIS variants in underlay, default for mpls design.\n - CVX: Configures fabric to leverage CloudVision eXchange as the overlay controller.\n - HER: Configures fabric with Head-End Replication, configures static VXLAN flood-lists instead of using a dynamic overlay protocol.\n - none: No overlay configuration will be generated, default for l2ls design.\n",
+ "mgmt_destination_networks": {
+ "type": "array",
+ "description": "List of IPv4 prefixes to configure as static routes towards the OOB Management interface gateway.\nReplaces the default route.",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask."
+ },
+ "title": "Management Destination Networks"
+ },
+ "mgmt_gateway": {
"type": "string",
- "enum": [
- "ebgp",
- "ibgp",
- "cvx",
- "her",
- "none"
- ],
- "default": "ebgp",
- "title": "Overlay Routing Protocol"
+ "description": "OOB Management interface gateway in IPv4 format.\nUsed as next-hop for default gateway or static routes defined under 'mgmt_destination_networks'.",
+ "title": "Management Gateway"
},
- "overlay_routing_protocol_address_family": {
+ "mgmt_interface": {
"type": "string",
- "description": "When set to `ipv6`, enable overlay EVPN peering with IPv6 addresses.\nThis feature depends on underlay_ipv6 variable. As of today, only RFC5549 is capable to transport IPv6 in the underlay.\n",
- "enum": [
- "ipv4",
- "ipv6"
- ],
- "default": "ipv4",
- "title": "Overlay Routing Protocol Address Family"
+ "default": "Management1",
+ "description": "OOB Management interface.",
+ "title": "Management Interface"
},
- "overlay_rt_type": {
+ "mgmt_interface_description": {
+ "type": "string",
+ "description": "Management interface description.\n",
+ "default": "oob_management",
+ "title": "Management Interface Description"
+ },
+ "mgmt_interface_vrf": {
+ "type": "string",
+ "default": "MGMT",
+ "description": "OOB Management VRF.",
+ "title": "Management Interface VRF"
+ },
+ "mgmt_vrf_routing": {
+ "type": "boolean",
+ "default": false,
+ "description": "Configure IP routing for the OOB Management VRF.",
+ "title": "Management VRF Routing"
+ },
+ "mlag_ibgp_peering_vrfs": {
"type": "object",
- "description": "Configuration options for the Administrator subfield (first part of RT) and the Assigned Number subfield (second part of RT).\n\nBy default Route Targets (RT) are set to:\n- `<(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.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VRFs.\n\nNotes:\nRT is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using 32-bit ASN/number the VNI can only be a 16-bit number. Alternatively use vlan_id/vrf_id as assigned number.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n",
+ "description": "On mlag leafs, an SVI interface is defined per vrf, to establish iBGP peering (required when there are MLAG leafs in topology).\nThe SVI id will be derived from the base vlan defined: mlag_ibgp_peering_vrfs.base_vlan + (vrf_id or vrf_vni) - 1.\nDepending on the values of vrf_id / vrf_vni it may be required to adjust the base_vlan to avoid overlaps or invalid vlan ids.\nThe SVI ip address derived from mlag_l3_peer_ipv4_pool is re-used across all iBGP peerings.\n",
"properties": {
- "admin_subfield": {
- "type": "string",
- "description": "The method for deriving RT Administrator subfield (first part of RT):\n- 'vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id` for VLANs and `(vrf_id or vrf_vni)` for VRFs.\n- 'vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id` for VLANs and `(vrf_vni or vrf_id)` for VRFs.\n- 'id' means `vlan_id` for VLANs and `(vrf_id or vrf_vni)` for VRFs.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\nThe 'vrf_id' and 'vrf_vni' methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\n",
- "default": "vrf_id",
- "title": "Admin Subfield"
- },
- "vrf_admin_subfield": {
- "type": "string",
- "description": "The method for deriving RT Administrator subfield (first part of RT) for VRF services:\n- 'id' means `(vrf_id or vrf_vni)`.\n- 'vrf_id' means `(vrf_id or vrf_vni)`.\n- 'vrf_vni' means `(vrf_vni or vrf_id)`.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n",
- "default": "vrf_id",
- "title": "VRF Admin Subfield"
- },
- "vlan_assigned_number_subfield": {
- "type": "string",
- "enum": [
- "mac_vrf_id",
- "mac_vrf_vni",
- "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).",
- "title": "VLAN Assigned Number Subfield"
+ "base_vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4093,
+ "default": 3000,
+ "title": "Base VLAN"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Overlay Rt Type"
- },
- "p2p_uplinks_mtu": {
- "description": "Point to Point Links MTU.",
- "type": "integer",
- "minimum": 68,
- "maximum": 65535,
- "default": 9214,
- "title": "P2P Uplinks MTU"
+ "title": "MLAG Ibgp Peering VRFs"
},
- "p2p_uplinks_qos_profile": {
- "description": "QOS Profile assigned on all infrastructure links.",
- "type": "string",
- "title": "P2P Uplinks QOS Profile"
+ "name_servers": {
+ "type": "array",
+ "description": "List of DNS servers. The VRF is set to < mgmt_interface_vrf >.",
+ "items": {
+ "type": "string",
+ "description": "IPv4 address"
+ },
+ "title": "Name Servers"
},
- "platform_settings": {
+ "network_ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
- "platforms": {
+ "switches": {
"type": "array",
+ "description": "Regex matching the full hostname of one or more switches.\nThe regular expression must match the full hostname.\n",
"items": {
"type": "string"
},
- "title": "Platforms"
+ "title": "Switches"
},
- "trident_forwarding_table_partition": {
+ "switch_ports": {
+ "type": "array",
+ "description": "List of ranges using AVD range_expand syntax.\nFor example:\n\nswitch_ports:\n - Ethernet1\n - Ethernet2-48\n\nAll switch_ports ranges are expanded into individual port configurations.\n\nFor more details and examples of the `range_expand` syntax, see the [arista.avd.range_expand documentation](../../../plugins/README.md#range_expand-filter)\n",
+ "items": {
+ "type": "string"
+ },
+ "title": "Switch Ports"
+ },
+ "description": {
"type": "string",
- "description": "Only applied when evpn_multicast is true.",
- "title": "Trident Forwarding Table Partition"
+ "description": "Description to be used on all ports.",
+ "title": "Description"
},
- "reload_delay": {
- "type": "object",
- "properties": {
- "mlag": {
- "type": "integer",
- "minimum": 0,
- "maximum": 86400,
- "description": "In seconds.",
- "title": "MLAG"
- },
- "non_mlag": {
- "type": "integer",
- "minimum": 0,
- "maximum": 86400,
- "description": "In seconds.",
- "title": "Non MLAG"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Reload Delay"
+ "speed": {
+ "type": "string",
+ "description": "Set adapter speed: `< interface_speed >`, `forced < interface_speed >`, `auto < interface_speed >`.\nIf not specified will be auto.\n",
+ "title": "Speed"
},
- "tcam_profile": {
+ "profile": {
"type": "string",
- "title": "TCAM Profile"
+ "description": "Port-profile name to inherit configuration.",
+ "title": "Profile"
},
- "lag_hardware_only": {
+ "enabled": {
"type": "boolean",
- "title": "LAG Hardware Only"
+ "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n",
+ "default": true,
+ "title": "Enabled"
},
- "feature_support": {
- "type": "object",
- "properties": {
- "queue_monitor_length_notify": {
- "type": "boolean",
- "default": true,
- "title": "Queue Monitor Length Notify"
- },
- "interface_storm_control": {
- "type": "boolean",
- "default": true,
- "title": "Interface Storm Control"
- },
- "poe": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "description": "Interface mode.",
+ "title": "Mode"
+ },
+ "mtu": {
+ "type": "integer",
+ "minimum": 68,
+ "maximum": 65535,
+ "title": "MTU"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "minimum": 68,
+ "maximum": 9416,
+ "description": "This should only be defined for platforms supporting the \"l2 mtu\" CLI command.",
+ "title": "L2 MTU"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "default": false,
+ "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.",
+ "title": "Native VLAN Tag"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n",
+ "title": "Trunk Groups"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.",
+ "title": "VLANs"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "flowcontrol": {
+ "type": "object",
+ "properties": {
+ "received": {
+ "type": "string",
+ "enum": [
+ "received",
+ "send",
+ "on"
+ ],
+ "title": "Received"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flowcontrol"
+ },
+ "qos_profile": {
+ "type": "string",
+ "description": "QOS profile name",
+ "title": "QOS Profile"
+ },
+ "ptp": {
+ "type": "object",
+ "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n",
+ "properties": {
+ "enabled": {
"type": "boolean",
"default": false,
- "title": "PoE"
+ "title": "Enabled"
},
- "bgp_update_wait_install": {
- "type": "boolean",
- "default": true,
- "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\nCan be overridden by setting \"bgp_update_wait_install\" host/group_vars.\n",
- "title": "BGP Update Wait Install"
+ "endpoint_role": {
+ "type": "string",
+ "default": "follower",
+ "enum": [
+ "bmca",
+ "default",
+ "follower"
+ ],
+ "title": "Endpoint Role"
},
- "bgp_update_wait_for_convergence": {
- "type": "boolean",
- "default": true,
- "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\nCan be overridden by setting \"bgp_update_wait_for_convergence\" host/group_vars.\n",
- "title": "BGP Update Wait For Convergence"
+ "profile": {
+ "type": "string",
+ "default": "aes67-r16-2016",
+ "enum": [
+ "aes67",
+ "aes67-r16-2016",
+ "smpte2059-2"
+ ],
+ "title": "Profile"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Feature Support"
- },
- "management_interface": {
- "type": "string",
- "default": "Management1",
- "title": "Management Interface"
- },
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the root level of the final EOS configuration.",
- "title": "Raw EOS CLI"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "default": [
- {
- "platforms": [
- "default"
- ],
- "feature_support": {
- "queue_monitor_length_notify": false
- },
- "reload_delay": {
- "mlag": 300,
- "non_mlag": 330
- }
- },
- {
- "platforms": [
- "7050X3",
- "720XP",
- "722XP"
- ],
- "feature_support": {
- "queue_monitor_length_notify": false
- },
- "reload_delay": {
- "mlag": 300,
- "non_mlag": 330
+ "title": "PTP"
},
- "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072"
- },
- {
- "platforms": [
- "7280R",
- "7280R2",
- "7020R"
- ],
- "lag_hardware_only": true,
- "reload_delay": {
- "mlag": 900,
- "non_mlag": 1020
+ "sflow": {
+ "type": "boolean",
+ "description": "Configures sFlow on the interface. Overrides `fabric_sflow` setting.\n",
+ "title": "Sflow"
},
- "tcam_profile": "vxlan-routing"
- },
- {
- "platforms": [
- "7280R3"
- ],
- "reload_delay": {
- "mlag": 900,
- "non_mlag": 1020
- }
- },
- {
- "platforms": [
- "7500R",
- "7500R2"
- ],
- "lag_hardware_only": true,
- "management_interface": "Management0",
- "reload_delay": {
- "mlag": 900,
- "non_mlag": 1020
+ "link_tracking": {
+ "type": "object",
+ "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "name": {
+ "type": "string",
+ "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n",
+ "title": "Name"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Tracking"
},
- "tcam_profile": "vxlan-routing"
- },
- {
- "platforms": [
- "7500R3",
- "7800R3"
- ],
- "management_interface": "Management0",
- "reload_delay": {
- "mlag": 900,
- "non_mlag": 1020
- }
- },
- {
- "platforms": [
- "7368X4"
- ],
- "management_interface": "Management0",
- "reload_delay": {
- "mlag": 300,
- "non_mlag": 330
- }
- },
- {
- "platforms": [
- "7300X3"
- ],
- "management_interface": "Management0",
- "reload_delay": {
- "mlag": 1200,
- "non_mlag": 1320
- },
- "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072"
- },
- {
- "platforms": [
- "VEOS",
- "VEOS-LAB",
- "vEOS",
- "vEOS-lab"
- ],
- "feature_support": {
- "bgp_update_wait_for_convergence": false,
- "bgp_update_wait_install": false,
- "interface_storm_control": false,
- "queue_monitor_length_notify": false
- },
- "reload_delay": {
- "mlag": 300,
- "non_mlag": 330
- }
- },
- {
- "platforms": [
- "CEOS",
- "cEOS",
- "ceos",
- "cEOSLab"
- ],
- "feature_support": {
- "bgp_update_wait_for_convergence": false,
- "bgp_update_wait_install": false,
- "interface_storm_control": false,
- "queue_monitor_length_notify": false
- },
- "management_interface": "Management0",
- "reload_delay": {
- "mlag": 300,
- "non_mlag": 330
- }
- }
- ],
- "title": "Platform Settings"
- },
- "platform_speed_groups": {
- "type": "array",
- "description": "Set Hardware Speed Groups per Platform.",
- "items": {
- "type": "object",
- "properties": {
- "platform": {
- "type": "string",
- "title": "Platform"
+ "dot1x": {
+ "type": "object",
+ "description": "802.1x",
+ "properties": {
+ "port_control": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "force-authorized",
+ "force-unauthorized"
+ ],
+ "title": "Port Control"
+ },
+ "port_control_force_authorized_phone": {
+ "type": "boolean",
+ "title": "Port Control Force Authorized Phone"
+ },
+ "reauthentication": {
+ "type": "boolean",
+ "title": "Reauthentication"
+ },
+ "pae": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "authenticator"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PAE"
+ },
+ "authentication_failure": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "allow",
+ "drop"
+ ],
+ "title": "Action"
+ },
+ "allow_vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Allow VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure"
+ },
+ "host_mode": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "multi-host",
+ "single-host"
+ ],
+ "title": "Mode"
+ },
+ "multi_host_authenticated": {
+ "type": "boolean",
+ "title": "Multi Host Authenticated"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Host Mode"
+ },
+ "mac_based_authentication": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "host_mode_common": {
+ "type": "boolean",
+ "title": "Host Mode Common"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Based Authentication"
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "idle_host": {
+ "type": "integer",
+ "minimum": 10,
+ "maximum": 65535,
+ "title": "Idle Host"
+ },
+ "quiet_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Quiet Period"
+ },
+ "reauth_period": {
+ "type": "string",
+ "description": "Range 60-4294967295 or \"server\".",
+ "title": "Reauth Period"
+ },
+ "reauth_timeout_ignore": {
+ "type": "boolean",
+ "title": "Reauth Timeout Ignore"
+ },
+ "tx_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "TX Period"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timeout"
+ },
+ "reauthorization_request_limit": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Reauthorization Request Limit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "dot1x"
},
- "speeds": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "speed": {
- "type": "string",
- "title": "Speed"
+ "poe": {
+ "type": "object",
+ "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
+ "default": false,
+ "title": "Disabled"
+ },
+ "priority": {
+ "type": "string",
+ "enum": [
+ "critical",
+ "high",
+ "medium",
+ "low"
+ ],
+ "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
+ "title": "Priority"
+ },
+ "reboot": {
+ "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Reboot"
+ },
+ "link_down": {
+ "description": "Set the PoE power behavior for a PoE port when the port goes down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ },
+ "power_off_delay": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 86400,
+ "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
+ "title": "Power Off Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Down"
+ },
+ "shutdown": {
+ "description": "Set the PoE power behavior for a PoE port when the port is admin down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shutdown"
+ },
+ "limit": {
+ "type": "object",
+ "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
+ "properties": {
+ "class": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 8,
+ "title": "Class"
+ },
+ "watts": {
+ "type": "string",
+ "title": "Watts"
+ },
+ "fixed": {
+ "type": "boolean",
+ "description": "Set to ignore hardware classification",
+ "title": "Fixed"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Limit"
+ },
+ "negotiation_lldp": {
+ "type": "boolean",
+ "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
+ "title": "Negotiation LLDP"
+ },
+ "legacy_detect": {
+ "type": "boolean",
+ "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
+ "title": "Legacy Detect"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PoE"
+ },
+ "storm_control": {
+ "type": "object",
+ "description": "Storm control settings applied on port toward the endpoint.",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "monitor_sessions": {
+ "type": "array",
+ "description": "Used to define switchports as source or destination for monitoring sessions.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Session name.",
+ "title": "Name"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "source",
+ "destination"
+ ],
+ "title": "Role"
+ },
+ "source_settings": {
+ "type": "object",
+ "properties": {
+ "direction": {
+ "type": "string",
+ "enum": [
+ "rx",
+ "tx",
+ "both"
+ ],
+ "title": "Direction"
+ },
+ "access_group": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ip",
+ "ipv6",
+ "mac"
+ ],
+ "title": "Type"
+ },
+ "name": {
+ "description": "ACL name.",
+ "type": "string",
+ "title": "Name"
+ },
+ "priority": {
+ "type": "integer",
+ "title": "Priority"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Access Group"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Settings"
+ },
+ "session_settings": {
+ "type": "object",
+ "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n",
+ "properties": {
+ "encapsulation_gre_metadata_tx": {
+ "type": "boolean",
+ "title": "Encapsulation Gre Metadata TX"
+ },
+ "header_remove_size": {
+ "type": "integer",
+ "description": "Number of bytes to remove from header.",
+ "title": "Header Remove Size"
+ },
+ "access_group": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ip",
+ "ipv6",
+ "mac"
+ ],
+ "title": "Type"
+ },
+ "name": {
+ "description": "ACL name.",
+ "type": "string",
+ "title": "Name"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Access Group"
+ },
+ "rate_limit_per_ingress_chip": {
+ "type": "string",
+ "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
+ "title": "Rate Limit Per Ingress Chip"
+ },
+ "rate_limit_per_egress_chip": {
+ "type": "string",
+ "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
+ "title": "Rate Limit Per Egress Chip"
+ },
+ "sample": {
+ "type": "integer",
+ "title": "Sample"
+ },
+ "truncate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "size": {
+ "type": "integer",
+ "description": "Size in bytes",
+ "title": "Size"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Truncate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Session Settings"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Monitor Sessions"
+ },
+ "ethernet_segment": {
+ "type": "object",
+ "description": "Settings for all or single-active EVPN multihoming.",
+ "properties": {
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n",
+ "title": "Short Esi"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n",
+ "title": "Redundancy"
+ },
+ "designated_forwarder_algorithm": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "modulus",
+ "preference"
+ ],
+ "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n",
+ "title": "Designated Forwarder Algorithm"
+ },
+ "designated_forwarder_preferences": {
+ "type": "array",
+ "description": "Manual preference as described above, required only for preference algorithm.",
+ "items": {
+ "type": "string"
+ },
+ "title": "Designated Forwarder Preferences"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.",
+ "title": "Dont Preempt"
+ }
+ },
+ "required": [
+ "short_esi"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Ethernet Segment"
+ },
+ "port_channel": {
+ "type": "object",
+ "description": "Used for port-channel adapter.",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "description": "Port-Channel Mode.",
+ "enum": [
+ "active",
+ "passive",
+ "on"
+ ],
+ "title": "Mode"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n",
+ "title": "Channel ID"
+ },
+ "description": {
+ "type": "string",
+ "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n",
+ "title": "Description"
+ },
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n",
+ "title": "Enabled"
+ },
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.",
+ "deprecated": true,
+ "title": "Short Esi"
+ },
+ "lacp_fallback": {
+ "type": "object",
+ "description": "LACP fallback configuration.",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "static"
+ ],
+ "description": "Currently only static mode is supported.",
+ "title": "Mode"
+ },
+ "timeout": {
+ "type": "integer",
+ "description": "Timeout in seconds. EOS default is 90 seconds.",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Fallback"
+ },
+ "lacp_timer": {
+ "type": "object",
+ "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "normal",
+ "fast"
+ ],
+ "description": "LACP mode for interface members.",
+ "title": "Mode"
+ },
+ "multiplier": {
+ "type": "integer",
+ "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.",
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Timer"
+ },
+ "subinterfaces": {
+ "type": "array",
+ "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "number": {
+ "type": "integer",
+ "description": "Subinterface number",
+ "title": "Number"
+ },
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\"\nRequired for multihomed port-channels with subinterfaces\n",
+ "title": "Short Esi"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "description": "VLAN ID to bridge.\nDefault is subinterface number.\n",
+ "title": "VLAN ID"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n",
+ "properties": {
+ "client_dot1q": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Client Dot1Q"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Subinterfaces"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "logging": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "link_status": {
+ "type": "boolean",
+ "title": "Link Status"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Event"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Logging"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI\n",
+ "title": "L2 MTU"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "List of switchport vlans as string\nFor a trunk port this would be a range like \"1-200,300\"\nFor an access port this would be a single vlan \"123\"\n",
+ "title": "VLANs"
+ },
+ "snmp_trap_link_change": {
+ "type": "boolean",
+ "title": "Snmp Trap Link Change"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "routed",
+ "switched",
+ "l3dot1q",
+ "l2dot1q"
+ ],
+ "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n",
+ "title": "Type"
+ },
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "VLAN tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "properties": {
+ "client": {
+ "type": "object",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Client VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Client Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Client Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "unmatched": {
+ "type": "boolean",
+ "title": "Unmatched"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Client"
+ },
+ "network": {
+ "type": "object",
+ "description": "Network encapsulation are all optional, and skipped if using client unmatched",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Network VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Network Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Network Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "client": {
+ "type": "boolean",
+ "title": "Client"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Network"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN ID"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "title": "Mode"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "default": false,
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN Tag"
+ },
+ "link_tracking_groups": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Group name",
+ "title": "Name"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "upstream",
+ "downstream"
+ ],
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Link Tracking Groups"
+ },
+ "phone": {
+ "type": "object",
+ "properties": {
+ "trunk": {
+ "type": "string",
+ "enum": [
+ "tagged",
+ "untagged"
+ ],
+ "title": "Trunk"
+ },
+ "vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Phone"
+ },
+ "l2_protocol": {
+ "type": "object",
+ "properties": {
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "Vlan tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "forwarding_profile": {
+ "type": "string",
+ "description": "L2 protocol forwarding profile",
+ "title": "Forwarding Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "L2 Protocol"
+ },
+ "mtu": {
+ "type": "integer",
+ "title": "MTU"
+ },
+ "mlag": {
+ "type": "integer",
+ "description": "MLAG ID",
+ "minimum": 1,
+ "maximum": 2000,
+ "title": "MLAG"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Trunk Groups"
+ },
+ "lacp_fallback_timeout": {
+ "type": "integer",
+ "description": "Timeout in seconds",
+ "default": 90,
+ "minimum": 0,
+ "maximum": 300,
+ "title": "LACP Fallback Timeout"
+ },
+ "lacp_fallback_mode": {
+ "type": "string",
+ "enum": [
+ "individual",
+ "static"
+ ],
+ "title": "LACP Fallback Mode"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "trust": {
+ "type": "string",
+ "enum": [
+ "dscp",
+ "cos",
+ "disabled"
+ ],
+ "title": "Trust"
+ },
+ "dscp": {
+ "type": "integer",
+ "description": "DSCP value",
+ "title": "DSCP"
+ },
+ "cos": {
+ "type": "integer",
+ "description": "COS value",
+ "title": "COS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Interval in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Policy Based Routing Policy-map name",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Quality of Service Policy-map name",
+ "title": "Input"
+ }
+ },
+ "required": [
+ "input"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "boolean",
+ "title": "IP"
+ },
+ "ldp": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "boolean",
+ "title": "Interface"
+ },
+ "igp_sync": {
+ "type": "boolean",
+ "title": "IGP Sync"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LDP"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "trunk_private_vlan_secondary": {
+ "type": "boolean",
+ "title": "Trunk Private VLAN Secondary"
+ },
+ "pvlan_mapping": {
+ "type": "string",
+ "description": "List of vlans as string",
+ "title": "PVLAN Mapping"
+ },
+ "vlan_translations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "List of vlans as string (only one vlan if direction is \"both\")",
+ "title": "From"
+ },
+ "to": {
+ "type": "integer",
+ "description": "VLAN ID",
+ "title": "To"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "in",
+ "out",
+ "both"
+ ],
+ "default": "both",
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "VLAN Translations"
+ },
+ "shape": {
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "string",
+ "description": "Rate in kbps, pps or percent\nSupported options are platform dependent\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n",
+ "title": "Rate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shape"
+ },
+ "storm_control": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "isis_enable": {
+ "type": "string",
+ "description": "ISIS instance",
+ "title": "ISIS Enable"
+ },
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "isis_circuit_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "level-2"
+ ],
+ "title": "ISIS Circuit Type"
+ },
+ "isis_hello_padding": {
+ "type": "boolean",
+ "title": "ISIS Hello Padding"
+ },
+ "isis_authentication_mode": {
+ "type": "string",
+ "enum": [
+ "text",
+ "md5"
+ ],
+ "title": "ISIS Authentication Mode"
+ },
+ "isis_authentication_key": {
+ "type": "string",
+ "description": "Type-7 encrypted password",
+ "title": "ISIS Authentication Key"
+ },
+ "traffic_policy": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Ingress traffic policy",
+ "title": "Input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Egress traffic policy",
+ "title": "Output"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Traffic Policy"
+ },
+ "evpn_ethernet_segment": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)",
+ "title": "Identifier"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "title": "Redundancy"
+ },
+ "designated_forwarder_election": {
+ "type": "object",
+ "properties": {
+ "algorithm": {
+ "type": "string",
+ "enum": [
+ "modulus",
+ "preference"
+ ],
+ "title": "Algorithm"
+ },
+ "preference_value": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "description": "Preference_value is only used when \"algorithm\" is \"preference\"",
+ "title": "Preference Value"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Dont_preempt is only used when \"algorithm\" is \"preference\"",
+ "default": false,
+ "title": "Dont Preempt"
+ },
+ "hold_time": {
+ "type": "integer",
+ "title": "Hold Time"
+ },
+ "subsequent_hold_time": {
+ "type": "integer",
+ "title": "Subsequent Hold Time"
+ },
+ "candidate_reachability_required": {
+ "type": "boolean",
+ "title": "Candidate Reachability Required"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Designated Forwarder Election"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "shared_index": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 1024,
+ "title": "Shared Index"
+ },
+ "tunnel_flood_filter_time": {
+ "type": "integer",
+ "title": "Tunnel Flood Filter Time"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "route_target": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Ethernet Segment"
+ },
+ "esi": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.",
+ "deprecated": true,
+ "title": "Esi"
+ },
+ "rt": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.",
+ "deprecated": true,
+ "title": "Rt"
+ },
+ "lacp_id": {
+ "type": "string",
+ "description": "LACP ID with format xxxx.xxxx.xxxx",
+ "title": "LACP ID"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "spanning_tree_guard": {
+ "type": "string",
+ "enum": [
+ "loop",
+ "root",
+ "disabled"
+ ],
+ "title": "Spanning Tree Guard"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "vmtracer": {
+ "type": "boolean",
+ "title": "VMTracer"
+ },
+ "ptp": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "announce": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ },
+ "timeout": {
+ "type": "integer",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Announce"
+ },
+ "delay_req": {
+ "type": "integer",
+ "title": "Delay Req"
+ },
+ "delay_mechanism": {
+ "type": "string",
+ "enum": [
+ "e2e",
+ "p2p"
+ ],
+ "title": "Delay Mechanism"
+ },
+ "sync_message": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sync Message"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "master",
+ "dynamic"
+ ],
+ "title": "Role"
+ },
+ "vlan": {
+ "type": "string",
+ "description": "VLAN can be 'all' or list of vlans as string",
+ "title": "VLAN"
+ },
+ "transport": {
+ "type": "string",
+ "enum": [
+ "ipv4",
+ "ipv6",
+ "layer2"
+ ],
+ "title": "Transport"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4 address/mask",
+ "title": "IP Address"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
+ },
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Nat"
+ },
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
+ },
+ "ipv6_address": {
+ "type": "string",
+ "description": "IPv6 address/mask",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "Link local IPv6 address/mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_nd_ra_disabled": {
+ "type": "boolean",
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
+ "type": "boolean",
+ "title": "IPv6 ND Managed Config Flag"
+ },
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "access_group_in": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group In"
+ },
+ "access_group_out": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group Out"
+ },
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "mac_access_group_in": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group In"
+ },
+ "mac_access_group_out": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group Out"
+ },
+ "pim": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PIM"
+ },
+ "service_profile": {
+ "type": "string",
+ "description": "QOS profile",
+ "title": "Service Profile"
+ },
+ "ospf_network_point_to_point": {
+ "type": "boolean",
+ "title": "OSPF Network Point To Point"
+ },
+ "ospf_area": {
+ "type": "string",
+ "title": "OSPF Area"
+ },
+ "ospf_cost": {
+ "type": "integer",
+ "title": "OSPF Cost"
+ },
+ "ospf_authentication": {
+ "type": "string",
+ "enum": [
+ "none",
+ "simple",
+ "message-digest"
+ ],
+ "title": "OSPF Authentication"
+ },
+ "ospf_authentication_key": {
+ "type": "string",
+ "description": "Encrypted password",
+ "title": "OSPF Authentication Key"
+ },
+ "ospf_message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Encrypted password",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
+ },
+ "flow_tracker": {
+ "type": "object",
+ "properties": {
+ "sampled": {
+ "type": "string",
+ "description": "Flow tracker name",
+ "title": "Sampled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flow Tracker"
+ },
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "session_tracker": {
+ "type": "string",
+ "description": "Name of session tracker",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
+ "peer": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer"
+ },
+ "peer_interface": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Interface"
+ },
+ "peer_type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Type"
+ },
+ "sflow": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "egress": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "unmodified_enable": {
+ "type": "boolean",
+ "title": "Unmodified Enable"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sflow"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration",
+ "title": "EOS CLI"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Port Channel"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "load_interval": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 600,
+ "description": "Interval in seconds for updating interface counters\"",
+ "title": "Load Interval"
+ },
+ "speed": {
+ "type": "string",
+ "description": "Speed can be interface_speed or forced interface_speed or auto interface_speed",
+ "title": "Speed"
+ },
+ "mtu": {
+ "type": "integer",
+ "title": "MTU"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI\n",
+ "title": "L2 MTU"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "List of switchport vlans as string\nFor a trunk port this would be a range like \"1-200,300\"\nFor an access port this would be a single vlan \"123\"\n",
+ "title": "VLANs"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN Tag"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "title": "Mode"
+ },
+ "phone": {
+ "type": "object",
+ "properties": {
+ "trunk": {
+ "type": "string",
+ "enum": [
+ "tagged",
+ "tagged phone",
+ "untagged",
+ "untagged phone"
+ ],
+ "title": "Trunk"
+ },
+ "vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Phone"
+ },
+ "l2_protocol": {
+ "type": "object",
+ "properties": {
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "Vlan tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "forwarding_profile": {
+ "type": "string",
+ "description": "L2 protocol forwarding profile",
+ "title": "Forwarding Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "L2 Protocol"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Trunk Groups"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "routed",
+ "switched",
+ "l3dot1q",
+ "l2dot1q",
+ "port-channel-member"
+ ],
+ "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n",
+ "title": "Type"
+ },
+ "snmp_trap_link_change": {
+ "type": "boolean",
+ "title": "Snmp Trap Link Change"
+ },
+ "address_locking": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "boolean",
+ "description": "Enable address locking for IPv4",
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "boolean",
+ "description": "Enable address locking for IPv6",
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Address Locking"
+ },
+ "flowcontrol": {
+ "type": "object",
+ "properties": {
+ "received": {
+ "type": "string",
+ "enum": [
+ "desired",
+ "on",
+ "off"
+ ],
+ "title": "Received"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flowcontrol"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "flow_tracker": {
+ "type": "object",
+ "properties": {
+ "sampled": {
+ "type": "string",
+ "description": "Flow tracker name",
+ "title": "Sampled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flow Tracker"
+ },
+ "error_correction_encoding": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "title": "Enabled"
+ },
+ "fire_code": {
+ "type": "boolean",
+ "title": "Fire Code"
+ },
+ "reed_solomon": {
+ "type": "boolean",
+ "title": "Reed Solomon"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Error Correction Encoding"
+ },
+ "link_tracking_groups": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Group name",
+ "title": "Name"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "upstream",
+ "downstream"
+ ],
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Link Tracking Groups"
+ },
+ "evpn_ethernet_segment": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)",
+ "title": "Identifier"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "title": "Redundancy"
+ },
+ "designated_forwarder_election": {
+ "type": "object",
+ "properties": {
+ "algorithm": {
+ "type": "string",
+ "enum": [
+ "modulus",
+ "preference"
+ ],
+ "title": "Algorithm"
+ },
+ "preference_value": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "description": "Preference_value is only used when \"algorithm\" is \"preference\"",
+ "title": "Preference Value"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Dont_preempt is only used when \"algorithm\" is \"preference\"",
+ "title": "Dont Preempt"
+ },
+ "hold_time": {
+ "type": "integer",
+ "title": "Hold Time"
+ },
+ "subsequent_hold_time": {
+ "type": "integer",
+ "title": "Subsequent Hold Time"
+ },
+ "candidate_reachability_required": {
+ "type": "boolean",
+ "title": "Candidate Reachability Required"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Designated Forwarder Election"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "shared_index": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 1024,
+ "title": "Shared Index"
+ },
+ "tunnel_flood_filter_time": {
+ "type": "integer",
+ "title": "Tunnel Flood Filter Time"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "route_target": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Ethernet Segment"
+ },
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "VLAN tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "properties": {
+ "client": {
+ "type": "object",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Client VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Client Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Client Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "unmatched": {
+ "type": "boolean",
+ "title": "Unmatched"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Client"
+ },
+ "network": {
+ "type": "object",
+ "description": "Network encapsulations are all optional and skipped if using client unmatched",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Network VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Network outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Network inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "client": {
+ "type": "boolean",
+ "title": "Client"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Network"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN ID"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4 address/mask",
+ "title": "IP Address"
+ },
+ "ip_address_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "IP Address Secondaries"
+ },
+ "ip_helpers": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip_helper": {
+ "type": "string",
+ "title": "IP Helper"
+ },
+ "source_interface": {
+ "type": "string",
+ "description": "Source interface name",
+ "title": "Source Interface"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ip_helper"
+ ]
+ },
+ "title": "IP Helpers"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
+ },
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Nat"
+ },
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
+ },
+ "ipv6_address": {
+ "type": "string",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "Link local IPv6 address/mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_nd_ra_disabled": {
+ "type": "boolean",
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
+ "type": "boolean",
+ "title": "IPv6 ND Managed Config Flag"
+ },
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "ipv6_dhcp_relay_destinations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "DHCP server's IPv6 address",
+ "title": "Address"
+ },
+ "vrf": {
+ "type": "string",
+ "title": "VRF"
+ },
+ "local_interface": {
+ "type": "string",
+ "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address",
+ "title": "Local Interface"
+ },
+ "source_address": {
+ "type": "string",
+ "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface",
+ "title": "Source Address"
+ },
+ "link_address": {
+ "type": "string",
+ "description": "Override the default link address specified in the relayed DHCP packet",
+ "title": "Link Address"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "address"
+ ]
+ },
+ "title": "IPv6 DHCP Relay Destinations"
+ },
+ "access_group_in": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group In"
+ },
+ "access_group_out": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group Out"
+ },
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "mac_access_group_in": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group In"
+ },
+ "mac_access_group_out": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group Out"
+ },
+ "multicast": {
+ "type": "object",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "ACL name or multicast IP subnet",
+ "title": "Boundary"
+ },
+ "out": {
+ "type": "boolean",
+ "title": "Out"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Boundaries"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "ACL name or multicast IP subnet",
+ "title": "Boundary"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Boundaries"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "ospf_network_point_to_point": {
+ "type": "boolean",
+ "title": "OSPF Network Point To Point"
+ },
+ "ospf_area": {
+ "type": "string",
+ "title": "OSPF Area"
+ },
+ "ospf_cost": {
+ "type": "integer",
+ "title": "OSPF Cost"
+ },
+ "ospf_authentication": {
+ "type": "string",
+ "enum": [
+ "none",
+ "simple",
+ "message-digest"
+ ],
+ "title": "OSPF Authentication"
+ },
+ "ospf_authentication_key": {
+ "type": "string",
+ "description": "Encrypted password - only type 7 supported",
+ "title": "OSPF Authentication Key"
+ },
+ "ospf_message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Encrypted password - only type 7 supported",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
+ },
+ "pim": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PIM"
+ },
+ "mac_security": {
+ "type": "object",
+ "properties": {
+ "profile": {
+ "type": "string",
+ "title": "Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Security"
+ },
+ "channel_group": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "on",
+ "active",
+ "passive"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Channel Group"
+ },
+ "isis_enable": {
+ "type": "string",
+ "description": "ISIS instance",
+ "title": "ISIS Enable"
+ },
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "isis_circuit_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "level-2"
+ ],
+ "title": "ISIS Circuit Type"
+ },
+ "isis_hello_padding": {
+ "type": "boolean",
+ "title": "ISIS Hello Padding"
+ },
+ "isis_authentication_mode": {
+ "type": "string",
+ "enum": [
+ "text",
+ "md5"
+ ],
+ "title": "ISIS Authentication Mode"
+ },
+ "isis_authentication_key": {
+ "type": "string",
+ "description": "Type-7 encrypted password",
+ "title": "ISIS Authentication Key"
+ },
+ "poe": {
+ "type": "object",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
+ "default": false,
+ "title": "Disabled"
+ },
+ "priority": {
+ "type": "string",
+ "enum": [
+ "critical",
+ "high",
+ "medium",
+ "low"
+ ],
+ "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
+ "title": "Priority"
+ },
+ "reboot": {
+ "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Reboot"
+ },
+ "link_down": {
+ "description": "Set the PoE power behavior for a PoE port when the port goes down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ },
+ "power_off_delay": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 86400,
+ "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
+ "title": "Power Off Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Down"
+ },
+ "shutdown": {
+ "description": "Set the PoE power behavior for a PoE port when the port is admin down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shutdown"
+ },
+ "limit": {
+ "type": "object",
+ "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
+ "properties": {
+ "class": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 8,
+ "title": "Class"
+ },
+ "watts": {
+ "type": "string",
+ "title": "Watts"
+ },
+ "fixed": {
+ "type": "boolean",
+ "description": "Set to ignore hardware classification",
+ "title": "Fixed"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Limit"
+ },
+ "negotiation_lldp": {
+ "type": "boolean",
+ "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
+ "title": "Negotiation LLDP"
+ },
+ "legacy_detect": {
+ "type": "boolean",
+ "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
+ "title": "Legacy Detect"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PoE"
+ },
+ "ptp": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "announce": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ },
+ "timeout": {
+ "type": "integer",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Announce"
+ },
+ "delay_req": {
+ "type": "integer",
+ "title": "Delay Req"
+ },
+ "delay_mechanism": {
+ "type": "string",
+ "enum": [
+ "e2e",
+ "p2p"
+ ],
+ "title": "Delay Mechanism"
+ },
+ "sync_message": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sync Message"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "master",
+ "dynamic"
+ ],
+ "title": "Role"
+ },
+ "vlan": {
+ "type": "string",
+ "description": "VLAN can be 'all' or list of vlans as string",
+ "title": "VLAN"
+ },
+ "transport": {
+ "type": "string",
+ "enum": [
+ "ipv4",
+ "ipv6",
+ "layer2"
+ ],
+ "title": "Transport"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "profile": {
+ "type": "string",
+ "description": "Interface profile",
+ "title": "Profile"
+ },
+ "storm_control": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "logging": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "link_status": {
+ "type": "boolean",
+ "title": "Link Status"
+ },
+ "congestion_drops": {
+ "type": "boolean",
+ "title": "Congestion Drops"
+ },
+ "spanning_tree": {
+ "type": "boolean",
+ "title": "Spanning Tree"
+ },
+ "storm_control": {
+ "type": "boolean",
+ "title": "Storm Control"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Event"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Logging"
+ },
+ "lldp": {
+ "type": "object",
+ "properties": {
+ "transmit": {
+ "type": "boolean",
+ "title": "Transmit"
+ },
+ "receive": {
+ "type": "boolean",
+ "title": "Receive"
+ },
+ "ztp_vlan": {
+ "type": "integer",
+ "description": "ZTP vlan number",
+ "title": "ZTP VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LLDP"
+ },
+ "trunk_private_vlan_secondary": {
+ "type": "boolean",
+ "title": "Trunk Private VLAN Secondary"
+ },
+ "pvlan_mapping": {
+ "type": "string",
+ "description": "List of vlans as string",
+ "title": "PVLAN Mapping"
+ },
+ "vlan_translations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "List of vlans as string (only one vlan if direction is \"both\")",
+ "title": "From"
+ },
+ "to": {
+ "type": "integer",
+ "description": "VLAN ID",
+ "title": "To"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "in",
+ "out",
+ "both"
+ ],
+ "default": "both",
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "VLAN Translations"
+ },
+ "dot1x": {
+ "type": "object",
+ "properties": {
+ "port_control": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "force-authorized",
+ "force-unauthorized"
+ ],
+ "title": "Port Control"
+ },
+ "port_control_force_authorized_phone": {
+ "type": "boolean",
+ "title": "Port Control Force Authorized Phone"
+ },
+ "reauthentication": {
+ "type": "boolean",
+ "title": "Reauthentication"
+ },
+ "pae": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "authenticator"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PAE"
+ },
+ "authentication_failure": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "allow",
+ "drop"
+ ],
+ "title": "Action"
+ },
+ "allow_vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Allow VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure"
+ },
+ "host_mode": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "multi-host",
+ "single-host"
+ ],
+ "title": "Mode"
+ },
+ "multi_host_authenticated": {
+ "type": "boolean",
+ "title": "Multi Host Authenticated"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Host Mode"
+ },
+ "mac_based_authentication": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "host_mode_common": {
+ "type": "boolean",
+ "title": "Host Mode Common"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Based Authentication"
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "idle_host": {
+ "type": "integer",
+ "minimum": 10,
+ "maximum": 65535,
+ "title": "Idle Host"
+ },
+ "quiet_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Quiet Period"
+ },
+ "reauth_period": {
+ "type": "string",
+ "description": "Value can be 60-4294967295 or 'server'",
+ "title": "Reauth Period"
+ },
+ "reauth_timeout_ignore": {
+ "type": "boolean",
+ "title": "Reauth Timeout Ignore"
+ },
+ "tx_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "TX Period"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timeout"
+ },
+ "reauthorization_request_limit": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Reauthorization Request Limit"
+ },
+ "unauthorized": {
+ "type": "object",
+ "properties": {
+ "access_vlan_membership_egress": {
+ "type": "boolean",
+ "title": "Access VLAN Membership Egress"
+ },
+ "native_vlan_membership_egress": {
+ "type": "boolean",
+ "title": "Native VLAN Membership Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unauthorized"
+ },
+ "eapol": {
+ "type": "object",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "title": "Disabled"
+ },
+ "authentication_failure_fallback_mba": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "timeout": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure Fallback Mba"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Eapol"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "dot1x"
+ },
+ "service_profile": {
+ "type": "string",
+ "description": "QOS profile",
+ "title": "Service Profile"
+ },
+ "shape": {
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "string",
+ "description": "Rate in kbps, pps or percent\nSupported options are platform dependent\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n",
+ "title": "Rate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shape"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "trust": {
+ "type": "string",
+ "enum": [
+ "dscp",
+ "cos",
+ "disabled"
+ ],
+ "title": "Trust"
+ },
+ "dscp": {
+ "type": "integer",
+ "description": "DSCP value",
+ "title": "DSCP"
+ },
+ "cos": {
+ "type": "integer",
+ "description": "COS value",
+ "title": "COS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "spanning_tree_guard": {
+ "type": "string",
+ "enum": [
+ "loop",
+ "root",
+ "disabled"
+ ],
+ "title": "Spanning Tree Guard"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "vmtracer": {
+ "type": "boolean",
+ "title": "VMTracer"
+ },
+ "priority_flow_control": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "priorities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 7,
+ "title": "Priority"
+ },
+ "no_drop": {
+ "type": "boolean",
+ "title": "No Drop"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "priority"
+ ]
+ },
+ "title": "Priorities"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Priority Flow Control"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Interval in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Policy Based Routing Policy-map name",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Quality of Service Policy-map name",
+ "title": "Input"
+ }
+ },
+ "required": [
+ "input"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "boolean",
+ "title": "IP"
+ },
+ "ldp": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "boolean",
+ "title": "Interface"
+ },
+ "igp_sync": {
+ "type": "boolean",
+ "title": "IGP Sync"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LDP"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "lacp_timer": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "fast",
+ "normal"
+ ],
+ "title": "Mode"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 3000,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Timer"
+ },
+ "lacp_port_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "LACP Port Priority"
+ },
+ "transceiver": {
+ "type": "object",
+ "properties": {
+ "media": {
+ "type": "object",
+ "properties": {
+ "override": {
+ "type": "string",
+ "description": "Transceiver type",
+ "title": "Override"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Media"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Transceiver"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "traffic_policy": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Ingress traffic policy",
+ "title": "Input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Egress traffic policy",
+ "title": "Output"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Traffic Policy"
+ },
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "session_tracker": {
+ "type": "string",
+ "description": "Name of session tracker",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
+ "peer": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer"
+ },
+ "peer_interface": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Interface"
+ },
+ "peer_type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Type"
+ },
+ "sflow": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "egress": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "unmodified_enable": {
+ "type": "boolean",
+ "title": "Unmodified Enable"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sflow"
+ },
+ "port_profile": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Port Profile"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration",
+ "title": "EOS CLI"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Network Ports"
+ },
+ "network_services_keys": {
+ "type": "array",
+ "description": "Network Services can be grouped by using separate keys.\nThe keys can be customized to provide a better better organization or grouping of your data.\n`network_services_keys` should be defined in the top level group_vars for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "default": [
+ {
+ "name": "tenants"
+ }
+ ],
+ "title": "Network Services Keys"
+ },
+ "node_type_keys": {
+ "type": "array",
+ "description": "Define Node Type Keys, to specify the properties of each node type in the fabric.\nThis allows for complete customization of the fabric layout and functionality.\n`node_type_keys` should be defined in top level group_var for the fabric.\nThe default values will be overridden if defining this key, so it is recommended to copy the defaults and modify them.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "type": "string",
+ "title": "Key"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type value matching this node_type_key.",
+ "title": "Type"
+ },
+ "connected_endpoints": {
+ "type": "boolean",
+ "default": false,
+ "description": "Are endpoints connected to this node type.",
+ "title": "Connected Endpoints"
+ },
+ "default_evpn_role": {
+ "type": "string",
+ "enum": [
+ "none",
+ "client",
+ "server"
+ ],
+ "default": "none",
+ "description": "Default evpn_role. Can be overridden in topology vars.",
+ "title": "Default EVPN Role"
+ },
+ "default_ptp_priority1": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 255,
+ "default": 127,
+ "description": "Default PTP priority 1",
+ "title": "Default PTP Priority1"
+ },
+ "default_underlay_routing_protocol": {
+ "type": "string",
+ "default": "ebgp",
+ "enum": [
+ "ebgp",
+ "ibgp",
+ "ospf",
+ "ospf-ldp",
+ "isis",
+ "isis-sr",
+ "isis-ldp",
+ "isis-sr-ldp",
+ "none"
+ ],
+ "description": "Set the default underlay routing_protocol.\nCan be overridden by setting \"underlay_routing_protocol\" host/group_vars.\n",
+ "title": "Default Underlay Routing Protocol"
+ },
+ "default_overlay_routing_protocol": {
+ "type": "string",
+ "default": "ebgp",
+ "enum": [
+ "ebgp",
+ "ibgp",
+ "her",
+ "cvx",
+ "none"
+ ],
+ "description": "Set the default overlay routing_protocol.\nCan be overridden by setting \"overlay_routing_protocol\" host/group_vars.\n",
+ "title": "Default Overlay Routing Protocol"
+ },
+ "default_mpls_overlay_role": {
+ "type": "string",
+ "enum": [
+ "client",
+ "server",
+ "none"
+ ],
+ "description": "Set the default mpls overlay role.\nActing role in overlay control plane.\n",
+ "title": "Default MPLS Overlay Role"
+ },
+ "default_overlay_address_families": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "evpn",
+ "vpn-ipv4",
+ "vpn-ipv6"
+ ]
+ },
+ "description": "Set the default overlay address families.\n",
+ "title": "Default Overlay Address Families"
+ },
+ "default_evpn_encapsulation": {
+ "type": "string",
+ "enum": [
+ "mpls",
+ "vxlan"
+ ],
+ "description": "Set the default evpn encapsulation.\n",
+ "title": "Default EVPN Encapsulation"
+ },
+ "mlag_support": {
+ "type": "boolean",
+ "default": false,
+ "description": "Can this node type support mlag.",
+ "title": "MLAG Support"
+ },
+ "network_services": {
+ "description": "Will network services be deployed on this node type.",
+ "type": "object",
+ "properties": {
+ "l1": {
+ "type": "boolean",
+ "default": false,
+ "description": "??",
+ "title": "L1"
+ },
+ "l2": {
+ "type": "boolean",
+ "default": false,
+ "description": "Vlans",
+ "title": "L2"
+ },
+ "l3": {
+ "type": "boolean",
+ "default": false,
+ "description": "VRFs, SVIs (if l2 is true).\nOnly supported with underlay_router.\n",
+ "title": "L3"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Network Services"
+ },
+ "underlay_router": {
+ "type": "boolean",
+ "default": true,
+ "description": "Is this node type a L3 device.",
+ "title": "Underlay Router"
+ },
+ "uplink_type": {
+ "type": "string",
+ "enum": [
+ "p2p",
+ "port-channel"
+ ],
+ "default": "p2p",
+ "description": "Uplinks must be p2p if \"vtep\" or \"underlay_router\" is true.",
+ "title": "Uplink Type"
+ },
+ "vtep": {
+ "type": "boolean",
+ "default": false,
+ "description": "Is this switch an EVPN VTEP.",
+ "title": "Vtep"
+ },
+ "mpls_lsr": {
+ "type": "boolean",
+ "default": false,
+ "description": "Is this switch an MPLS LSR.",
+ "title": "MPLS Lsr"
+ },
+ "ip_addressing": {
+ "type": "object",
+ "description": "Override ip_addressing templates.",
+ "properties": {
+ "python_module": {
+ "type": "string",
+ "description": "Custom Python Module to import for IP addressing.",
+ "title": "Python Module"
+ },
+ "python_class_name": {
+ "type": "string",
+ "description": "Name of Custom Python Class to import for IP addressing.",
+ "title": "Python Class Name"
+ },
+ "router_id": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Router ID"
+ },
+ "router_id_ipv6": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Router ID IPv6"
+ },
+ "mlag_ip_primary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG IP Primary"
+ },
+ "mlag_ip_secondary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG IP Secondary"
+ },
+ "mlag_l3_ip_primary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG L3 IP Primary"
+ },
+ "mlag_l3_ip_secondary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG L3 IP Secondary"
+ },
+ "mlag_ibgp_peering_ip_primary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG Ibgp Peering IP Primary"
+ },
+ "mlag_ibgp_peering_ip_secondary": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG Ibgp Peering IP Secondary"
+ },
+ "p2p_uplinks_ip": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "P2P Uplinks IP"
+ },
+ "p2p_uplinks_peer_ip": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "P2P Uplinks Peer IP"
+ },
+ "vtep_ip_mlag": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Vtep IP MLAG"
+ },
+ "vtep_ip": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Vtep IP"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Addressing"
+ },
+ "interface_descriptions": {
+ "type": "object",
+ "description": "Override interface_descriptions templates\nIf description templates use Jinja2, they have to strip whitespaces using {%- -%} on any code blocks.\n",
+ "properties": {
+ "python_module": {
+ "type": "string",
+ "description": "Custom Python Module to import for interface descriptions.",
+ "title": "Python Module"
+ },
+ "python_class_name": {
+ "type": "string",
+ "description": "Name of Custom Python Class to import for interface descriptions.",
+ "title": "Python Class Name"
+ },
+ "underlay_ethernet_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Underlay Ethernet Interfaces"
+ },
+ "underlay_port_channel_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Underlay Port Channel Interfaces"
+ },
+ "mlag_ethernet_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG Ethernet Interfaces"
+ },
+ "mlag_port_channel_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "MLAG Port Channel Interfaces"
+ },
+ "connected_endpoints_ethernet_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Connected Endpoints Ethernet Interfaces"
+ },
+ "connected_endpoints_port_channel_interfaces": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Connected Endpoints Port Channel Interfaces"
+ },
+ "overlay_loopback_interface": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Overlay Loopback Interface"
+ },
+ "vtep_loopback_interface": {
+ "type": "string",
+ "description": "Path to Custom J2 template.",
+ "title": "Vtep Loopback Interface"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Interface Descriptions"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "key"
+ ]
+ },
+ "title": "Node Type Keys"
+ },
+ "only_local_vlan_trunk_groups": {
+ "type": "boolean",
+ "description": "A vlan can have many trunk_groups assigned.\nTo avoid unneeded configuration changes on all leaf switches when a new trunk group is added,\nthis feature will only configure the vlan trunk groups matched with local connected_endpoints.\nSee \"Details on only_local_vlan_trunk_groups\" below.\nRequires \"enable_trunk_groups: true\".\n",
+ "default": false,
+ "title": "Only Local VLAN Trunk Groups"
+ },
+ "overlay_cvx_servers": {
+ "description": "List of CVX vxlan overlay controllers.\nRequired if overlay_routing_protocol == CVX.\nCVX servers (VMs) are peering using their management interface, so mgmt_ip must be set for all CVX servers.\n",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "'inventory_hostname' of CVX server"
+ },
+ "title": "Overlay CVX Servers"
+ },
+ "overlay_her_flood_list_per_vni": {
+ "type": "boolean",
+ "description": "When using Head-End Replication, configure flood-lists per VNI.\nBy default HER will be configured with a common flood-list containing all VTEPs.\nThis behavior can be changed to per-VNI flood-lists by setting `overlay_her_flood_list_per_vni: true`.\nThis will make `eos_designs` consider configured VLANs per VTEP, and only include the relevant VTEPs to each VNI's flood-list.\n",
+ "default": false,
+ "title": "Overlay Her Flood List Per Vni"
+ },
+ "overlay_her_flood_list_scope": {
+ "type": "string",
+ "description": "When using Head-End Replication, set the scope of flood-lists to Fabric or DC.\nBy default all VTEPs in the Fabric (part of the inventory group referenced by \"fabric_name\") are added to the flood-lists.\nThis can be changed to all VTEPs in the DC (sharing the same \"dc_name\" value).\nThis is useful if Border Leaf switches are dividing the VXLAN overlay into separate domains.\n",
+ "enum": [
+ "fabric",
+ "dc"
+ ],
+ "default": "fabric",
+ "title": "Overlay Her Flood List Scope"
+ },
+ "overlay_loopback_description": {
+ "description": "Customize the description on overlay interface Loopback0.",
+ "type": "string",
+ "title": "Overlay Loopback Description"
+ },
+ "overlay_mlag_rfc5549": {
+ "description": "IPv6 Unnumbered for MLAG iBGP connections.\nRequires \"underlay_rfc5549: true\".\n",
+ "type": "boolean",
+ "default": false,
+ "title": "Overlay MLAG Rfc5549"
+ },
+ "overlay_rd_type": {
+ "type": "object",
+ "description": "Configuration options for the Administrator subfield (first part of RD) and the Assigned Number subfield (second part of RD).\n\nBy default Route Distinguishers (RD) are set to:\n- `:` for VLANs and VLAN-Aware Bundles with L2 vlans.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VRFs.\n\nNote:\nRD is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using loopback or 32-bit ASN/number the assigned number can only be a 16-bit number. This may be a problem with large VNIs.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n",
+ "properties": {
+ "admin_subfield": {
+ "type": "string",
+ "description": "The method for deriving RD Administrator subfield (first part of RD):\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n",
+ "default": "overlay_loopback_ip",
+ "title": "Admin Subfield"
+ },
+ "admin_subfield_offset": {
+ "type": "string",
+ "description": "Offset can only be used if admin_subfield is an integer between <0-4294967295> or 'switch_id'.\nTotal value of admin_subfield + admin_subfield_offset must be <= 4294967295.\n",
+ "title": "Admin Subfield Offset"
+ },
+ "vrf_admin_subfield": {
+ "type": "string",
+ "description": "The method for deriving RD Administrator subfield (first part of RD) for VRF services:\n- 'overlay_loopback_ip' means the IP address of Loopback0.\n- 'vtep_loopback' means the IP address of the VTEP loopback interface.\n- 'bgp_as' means the AS number of the device.\n- 'switch_id' means the 'id' value of the device.\n- Any without mask.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n",
+ "title": "VRF Admin Subfield"
+ },
+ "vrf_admin_subfield_offset": {
+ "type": "string",
+ "description": "Offset can only be used if 'vrf_admin_subfield' is an integer between <0-4294967295> or 'switch_id'.\nTotal value of 'vrf_admin_subfield' + 'vrf_admin_subfield_offset' must be <= 4294967295.\n",
+ "title": "VRF Admin Subfield Offset"
+ },
+ "vlan_assigned_number_subfield": {
+ "type": "string",
+ "enum": [
+ "mac_vrf_id",
+ "mac_vrf_vni",
+ "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).",
+ "title": "VLAN Assigned Number Subfield"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Overlay Rd Type"
+ },
+ "overlay_routing_protocol": {
+ "description": "- The following overlay routing protocols are supported:\n - eBGP: Configures fabric with eBGP, default for l3ls-evpn design.\n - iBGP: Configured fabric with iBGP, only supported with OSPF or ISIS variants in underlay, default for mpls design.\n - CVX: Configures fabric to leverage CloudVision eXchange as the overlay controller.\n - HER: Configures fabric with Head-End Replication, configures static VXLAN flood-lists instead of using a dynamic overlay protocol.\n - none: No overlay configuration will be generated, default for l2ls design.\n",
+ "type": "string",
+ "enum": [
+ "ebgp",
+ "ibgp",
+ "cvx",
+ "her",
+ "none"
+ ],
+ "default": "ebgp",
+ "title": "Overlay Routing Protocol"
+ },
+ "overlay_routing_protocol_address_family": {
+ "type": "string",
+ "description": "When set to `ipv6`, enable overlay EVPN peering with IPv6 addresses.\nThis feature depends on underlay_ipv6 variable. As of today, only RFC5549 is capable to transport IPv6 in the underlay.\n",
+ "enum": [
+ "ipv4",
+ "ipv6"
+ ],
+ "default": "ipv4",
+ "title": "Overlay Routing Protocol Address Family"
+ },
+ "overlay_rt_type": {
+ "type": "object",
+ "description": "Configuration options for the Administrator subfield (first part of RT) and the Assigned Number subfield (second part of RT).\n\nBy default Route Targets (RT) are set to:\n- `<(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.\n- `:` for VLAN-Aware Bundles with SVIs.\n- `:` for VRFs.\n\nNotes:\nRT is a 48-bit value which is split into <16-bit>:<32-bit> or <32-bit>:<16-bit>.\nWhen using 32-bit ASN/number the VNI can only be a 16-bit number. Alternatively use vlan_id/vrf_id as assigned number.\nFor 16-bit ASN/number the assigned number can be a 32-bit number.\n",
+ "properties": {
+ "admin_subfield": {
+ "type": "string",
+ "description": "The method for deriving RT Administrator subfield (first part of RT):\n- 'vrf_id' means `(mac_vrf_id_base or mac_vrf_vni_base) + vlan_id` for VLANs and `(vrf_id or vrf_vni)` for VRFs.\n- 'vrf_vni' means `(mac_vrf_vni_base or mac_vrf_id_base) + vlan_id` for VLANs and `(vrf_vni or vrf_id)` for VRFs.\n- 'id' means `vlan_id` for VLANs and `(vrf_id or vrf_vni)` for VRFs.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\nThe 'vrf_id' and 'vrf_vni' methods can be overridden per VLAN if either 'rt_override' or 'vni_override' is set (preferred in this order).\n",
+ "default": "vrf_id",
+ "title": "Admin Subfield"
+ },
+ "vrf_admin_subfield": {
+ "type": "string",
+ "description": "The method for deriving RT Administrator subfield (first part of RT) for VRF services:\n- 'id' means `(vrf_id or vrf_vni)`.\n- 'vrf_id' means `(vrf_id or vrf_vni)`.\n- 'vrf_vni' means `(vrf_vni or vrf_id)`.\n- 'bgp_as' means the AS number of the device.\n- Integer between <0-65535>.\n- Integer between <0-4294967295>.\n\n'vrf_admin_subfield' takes precedence for VRF RDs if set. Otherwise the 'admin_subfield' value will be used.\n",
+ "default": "vrf_id",
+ "title": "VRF Admin Subfield"
+ },
+ "vlan_assigned_number_subfield": {
+ "type": "string",
+ "enum": [
+ "mac_vrf_id",
+ "mac_vrf_vni",
+ "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).",
+ "title": "VLAN Assigned Number Subfield"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Overlay Rt Type"
+ },
+ "p2p_uplinks_mtu": {
+ "description": "Point to Point Links MTU.",
+ "type": "integer",
+ "minimum": 68,
+ "maximum": 65535,
+ "default": 9214,
+ "title": "P2P Uplinks MTU"
+ },
+ "p2p_uplinks_qos_profile": {
+ "description": "QOS Profile assigned on all infrastructure links.",
+ "type": "string",
+ "title": "P2P Uplinks QOS Profile"
+ },
+ "platform_settings": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "platforms": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Platforms"
+ },
+ "trident_forwarding_table_partition": {
+ "type": "string",
+ "description": "Only applied when evpn_multicast is true.",
+ "title": "Trident Forwarding Table Partition"
+ },
+ "reload_delay": {
+ "type": "object",
+ "properties": {
+ "mlag": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 86400,
+ "description": "In seconds.",
+ "title": "MLAG"
+ },
+ "non_mlag": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 86400,
+ "description": "In seconds.",
+ "title": "Non MLAG"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Reload Delay"
+ },
+ "tcam_profile": {
+ "type": "string",
+ "title": "TCAM Profile"
+ },
+ "lag_hardware_only": {
+ "type": "boolean",
+ "title": "LAG Hardware Only"
+ },
+ "feature_support": {
+ "type": "object",
+ "properties": {
+ "queue_monitor_length_notify": {
+ "type": "boolean",
+ "default": true,
+ "title": "Queue Monitor Length Notify"
+ },
+ "interface_storm_control": {
+ "type": "boolean",
+ "default": true,
+ "title": "Interface Storm Control"
+ },
+ "poe": {
+ "type": "boolean",
+ "default": false,
+ "title": "PoE"
+ },
+ "bgp_update_wait_install": {
+ "type": "boolean",
+ "default": true,
+ "description": "Disables FIB updates and route advertisement when the BGP instance is initiated until the BGP convergence state is reached.\nCan be overridden by setting \"bgp_update_wait_install\" host/group_vars.\n",
+ "title": "BGP Update Wait Install"
+ },
+ "bgp_update_wait_for_convergence": {
+ "type": "boolean",
+ "default": true,
+ "description": "Do not advertise reachability to a prefix until that prefix has been installed in hardware.\nThis will eliminate any temporary black holes due to a BGP speaker advertising reachability to a prefix that may not yet be installed into the forwarding plane.\nCan be overridden by setting \"bgp_update_wait_for_convergence\" host/group_vars.\n",
+ "title": "BGP Update Wait For Convergence"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Feature Support"
+ },
+ "management_interface": {
+ "type": "string",
+ "default": "Management1",
+ "title": "Management Interface"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the root level of the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "default": [
+ {
+ "platforms": [
+ "default"
+ ],
+ "feature_support": {
+ "queue_monitor_length_notify": false
+ },
+ "reload_delay": {
+ "mlag": 300,
+ "non_mlag": 330
+ }
+ },
+ {
+ "platforms": [
+ "7050X3",
+ "720XP",
+ "722XP"
+ ],
+ "feature_support": {
+ "queue_monitor_length_notify": false
+ },
+ "reload_delay": {
+ "mlag": 300,
+ "non_mlag": 330
+ },
+ "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072"
+ },
+ {
+ "platforms": [
+ "7280R",
+ "7280R2",
+ "7020R"
+ ],
+ "lag_hardware_only": true,
+ "reload_delay": {
+ "mlag": 900,
+ "non_mlag": 1020
+ },
+ "tcam_profile": "vxlan-routing"
+ },
+ {
+ "platforms": [
+ "7280R3"
+ ],
+ "reload_delay": {
+ "mlag": 900,
+ "non_mlag": 1020
+ }
+ },
+ {
+ "platforms": [
+ "7500R",
+ "7500R2"
+ ],
+ "lag_hardware_only": true,
+ "management_interface": "Management0",
+ "reload_delay": {
+ "mlag": 900,
+ "non_mlag": 1020
+ },
+ "tcam_profile": "vxlan-routing"
+ },
+ {
+ "platforms": [
+ "7500R3",
+ "7800R3"
+ ],
+ "management_interface": "Management0",
+ "reload_delay": {
+ "mlag": 900,
+ "non_mlag": 1020
+ }
+ },
+ {
+ "platforms": [
+ "7368X4"
+ ],
+ "management_interface": "Management0",
+ "reload_delay": {
+ "mlag": 300,
+ "non_mlag": 330
+ }
+ },
+ {
+ "platforms": [
+ "7300X3"
+ ],
+ "management_interface": "Management0",
+ "reload_delay": {
+ "mlag": 1200,
+ "non_mlag": 1320
+ },
+ "trident_forwarding_table_partition": "flexible exact-match 16384 l2-shared 98304 l3-shared 131072"
+ },
+ {
+ "platforms": [
+ "VEOS",
+ "VEOS-LAB",
+ "vEOS",
+ "vEOS-lab"
+ ],
+ "feature_support": {
+ "bgp_update_wait_for_convergence": false,
+ "bgp_update_wait_install": false,
+ "interface_storm_control": false,
+ "queue_monitor_length_notify": false
+ },
+ "reload_delay": {
+ "mlag": 300,
+ "non_mlag": 330
+ }
+ },
+ {
+ "platforms": [
+ "CEOS",
+ "cEOS",
+ "ceos",
+ "cEOSLab"
+ ],
+ "feature_support": {
+ "bgp_update_wait_for_convergence": false,
+ "bgp_update_wait_install": false,
+ "interface_storm_control": false,
+ "queue_monitor_length_notify": false
+ },
+ "management_interface": "Management0",
+ "reload_delay": {
+ "mlag": 300,
+ "non_mlag": 330
+ }
+ }
+ ],
+ "title": "Platform Settings"
+ },
+ "platform_speed_groups": {
+ "type": "array",
+ "description": "Set Hardware Speed Groups per Platform.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "platform": {
+ "type": "string",
+ "title": "Platform"
+ },
+ "speeds": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "speed": {
+ "type": "string",
+ "title": "Speed"
+ },
+ "speed_groups": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "title": "Speed Groups"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "speed"
+ ]
+ },
+ "title": "Speeds"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "platform"
+ ]
+ },
+ "title": "Platform Speed Groups"
+ },
+ "pod_name": {
+ "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- VRF Loopbacks: `vtep_diagnostic.loopback_ip_pools.pod` (Required)\n\nRecommended to be common between Spines and Leafs within a POD (One l3ls topology).\n",
+ "type": "string",
+ "title": "Pod Name"
+ },
+ "port_profiles": {
+ "type": "array",
+ "description": "Optional profiles to share common settings for connected_endpoints and/or network_ports.\nKeys are the same used under endpoints adapters. Keys defined under endpoints adapters take precedence.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "profile": {
+ "type": "string",
+ "description": "Port profile name.",
+ "title": "Profile"
+ },
+ "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).",
+ "title": "Parent Profile"
+ },
+ "speed": {
+ "type": "string",
+ "description": "Set adapter speed: `< interface_speed >`, `forced < interface_speed >`, `auto < interface_speed >`.\nIf not specified will be auto.\n",
+ "title": "Speed"
+ },
+ "description": {
+ "type": "string",
+ "description": "By default the description is built leveraging `_`.\nWhen set this key will overide the default value on the physical ports.\n",
+ "title": "Description"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n",
+ "default": true,
+ "title": "Enabled"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "description": "Interface mode.",
+ "title": "Mode"
+ },
+ "mtu": {
+ "type": "integer",
+ "minimum": 68,
+ "maximum": 65535,
+ "title": "MTU"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "minimum": 68,
+ "maximum": 9416,
+ "description": "This should only be defined for platforms supporting the \"l2 mtu\" CLI command.",
+ "title": "L2 MTU"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "default": false,
+ "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.",
+ "title": "Native VLAN Tag"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n",
+ "title": "Trunk Groups"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.",
+ "title": "VLANs"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "flowcontrol": {
+ "type": "object",
+ "properties": {
+ "received": {
+ "type": "string",
+ "enum": [
+ "received",
+ "send",
+ "on"
+ ],
+ "title": "Received"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flowcontrol"
+ },
+ "qos_profile": {
+ "type": "string",
+ "description": "QOS profile name",
+ "title": "QOS Profile"
+ },
+ "ptp": {
+ "type": "object",
+ "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": false,
+ "title": "Enabled"
+ },
+ "endpoint_role": {
+ "type": "string",
+ "default": "follower",
+ "enum": [
+ "bmca",
+ "default",
+ "follower"
+ ],
+ "title": "Endpoint Role"
+ },
+ "profile": {
+ "type": "string",
+ "default": "aes67-r16-2016",
+ "enum": [
+ "aes67",
+ "aes67-r16-2016",
+ "smpte2059-2"
+ ],
+ "title": "Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "sflow": {
+ "type": "boolean",
+ "description": "Configures sFlow on the interface. Overrides `fabric_sflow` setting.\n",
+ "title": "Sflow"
+ },
+ "link_tracking": {
+ "type": "object",
+ "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "name": {
+ "type": "string",
+ "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n",
+ "title": "Name"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Tracking"
+ },
+ "dot1x": {
+ "type": "object",
+ "description": "802.1x",
+ "properties": {
+ "port_control": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "force-authorized",
+ "force-unauthorized"
+ ],
+ "title": "Port Control"
+ },
+ "port_control_force_authorized_phone": {
+ "type": "boolean",
+ "title": "Port Control Force Authorized Phone"
+ },
+ "reauthentication": {
+ "type": "boolean",
+ "title": "Reauthentication"
+ },
+ "pae": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "authenticator"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PAE"
+ },
+ "authentication_failure": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "allow",
+ "drop"
+ ],
+ "title": "Action"
+ },
+ "allow_vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Allow VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure"
+ },
+ "host_mode": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "multi-host",
+ "single-host"
+ ],
+ "title": "Mode"
+ },
+ "multi_host_authenticated": {
+ "type": "boolean",
+ "title": "Multi Host Authenticated"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Host Mode"
+ },
+ "mac_based_authentication": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "host_mode_common": {
+ "type": "boolean",
+ "title": "Host Mode Common"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Based Authentication"
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "idle_host": {
+ "type": "integer",
+ "minimum": 10,
+ "maximum": 65535,
+ "title": "Idle Host"
+ },
+ "quiet_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Quiet Period"
+ },
+ "reauth_period": {
+ "type": "string",
+ "description": "Range 60-4294967295 or \"server\".",
+ "title": "Reauth Period"
+ },
+ "reauth_timeout_ignore": {
+ "type": "boolean",
+ "title": "Reauth Timeout Ignore"
+ },
+ "tx_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "TX Period"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timeout"
+ },
+ "reauthorization_request_limit": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Reauthorization Request Limit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "dot1x"
+ },
+ "poe": {
+ "type": "object",
+ "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
+ "default": false,
+ "title": "Disabled"
+ },
+ "priority": {
+ "type": "string",
+ "enum": [
+ "critical",
+ "high",
+ "medium",
+ "low"
+ ],
+ "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
+ "title": "Priority"
+ },
+ "reboot": {
+ "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Reboot"
+ },
+ "link_down": {
+ "description": "Set the PoE power behavior for a PoE port when the port goes down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ },
+ "power_off_delay": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 86400,
+ "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
+ "title": "Power Off Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Down"
+ },
+ "shutdown": {
+ "description": "Set the PoE power behavior for a PoE port when the port is admin down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shutdown"
+ },
+ "limit": {
+ "type": "object",
+ "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
+ "properties": {
+ "class": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 8,
+ "title": "Class"
+ },
+ "watts": {
+ "type": "string",
+ "title": "Watts"
+ },
+ "fixed": {
+ "type": "boolean",
+ "description": "Set to ignore hardware classification",
+ "title": "Fixed"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Limit"
+ },
+ "negotiation_lldp": {
+ "type": "boolean",
+ "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
+ "title": "Negotiation LLDP"
+ },
+ "legacy_detect": {
+ "type": "boolean",
+ "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
+ "title": "Legacy Detect"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PoE"
+ },
+ "storm_control": {
+ "type": "object",
+ "description": "Storm control settings applied on port toward the endpoint.",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level.",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "default": "percent",
+ "description": "Optional variable and is hardware dependent.",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "monitor_sessions": {
+ "type": "array",
+ "description": "Used to define switchports as source or destination for monitoring sessions.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Session name.",
+ "title": "Name"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "source",
+ "destination"
+ ],
+ "title": "Role"
+ },
+ "source_settings": {
+ "type": "object",
+ "properties": {
+ "direction": {
+ "type": "string",
+ "enum": [
+ "rx",
+ "tx",
+ "both"
+ ],
+ "title": "Direction"
+ },
+ "access_group": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ip",
+ "ipv6",
+ "mac"
+ ],
+ "title": "Type"
+ },
+ "name": {
+ "description": "ACL name.",
+ "type": "string",
+ "title": "Name"
+ },
+ "priority": {
+ "type": "integer",
+ "title": "Priority"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Access Group"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Settings"
+ },
+ "session_settings": {
+ "type": "object",
+ "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n",
+ "properties": {
+ "encapsulation_gre_metadata_tx": {
+ "type": "boolean",
+ "title": "Encapsulation Gre Metadata TX"
+ },
+ "header_remove_size": {
+ "type": "integer",
+ "description": "Number of bytes to remove from header.",
+ "title": "Header Remove Size"
+ },
+ "access_group": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "ip",
+ "ipv6",
+ "mac"
+ ],
+ "title": "Type"
+ },
+ "name": {
+ "description": "ACL name.",
+ "type": "string",
+ "title": "Name"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Access Group"
+ },
+ "rate_limit_per_ingress_chip": {
+ "type": "string",
+ "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
+ "title": "Rate Limit Per Ingress Chip"
+ },
+ "rate_limit_per_egress_chip": {
+ "type": "string",
+ "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
+ "title": "Rate Limit Per Egress Chip"
+ },
+ "sample": {
+ "type": "integer",
+ "title": "Sample"
+ },
+ "truncate": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "size": {
+ "type": "integer",
+ "description": "Size in bytes",
+ "title": "Size"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Truncate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Session Settings"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Monitor Sessions"
+ },
+ "ethernet_segment": {
+ "type": "object",
+ "description": "Settings for all or single-active EVPN multihoming.",
+ "properties": {
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n",
+ "title": "Short Esi"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n",
+ "title": "Redundancy"
+ },
+ "designated_forwarder_algorithm": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "modulus",
+ "preference"
+ ],
+ "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n",
+ "title": "Designated Forwarder Algorithm"
+ },
+ "designated_forwarder_preferences": {
+ "type": "array",
+ "description": "Manual preference as described above, required only for preference algorithm.",
+ "items": {
+ "type": "string"
+ },
+ "title": "Designated Forwarder Preferences"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.",
+ "title": "Dont Preempt"
+ }
+ },
+ "required": [
+ "short_esi"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Ethernet Segment"
+ },
+ "port_channel": {
+ "type": "object",
+ "description": "Used for port-channel adapter.",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "description": "Port-Channel Mode.",
+ "enum": [
+ "active",
+ "passive",
+ "on"
+ ],
+ "title": "Mode"
+ },
+ "channel_id": {
+ "type": "integer",
+ "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n",
+ "title": "Channel ID"
+ },
+ "description": {
+ "type": "string",
+ "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n",
+ "title": "Description"
+ },
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n",
+ "title": "Enabled"
+ },
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.",
+ "deprecated": true,
+ "title": "Short Esi"
+ },
+ "lacp_fallback": {
+ "type": "object",
+ "description": "LACP fallback configuration.",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "static"
+ ],
+ "description": "Currently only static mode is supported.",
+ "title": "Mode"
+ },
+ "timeout": {
+ "type": "integer",
+ "description": "Timeout in seconds. EOS default is 90 seconds.",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Fallback"
+ },
+ "lacp_timer": {
+ "type": "object",
+ "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "normal",
+ "fast"
+ ],
+ "description": "LACP mode for interface members.",
+ "title": "Mode"
+ },
+ "multiplier": {
+ "type": "integer",
+ "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.",
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Timer"
+ },
+ "subinterfaces": {
+ "type": "array",
+ "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "number": {
+ "type": "integer",
+ "description": "Subinterface number",
+ "title": "Number"
+ },
+ "short_esi": {
+ "type": "string",
+ "description": "In format xxxx:xxxx:xxxx or \"auto\"\nRequired for multihomed port-channels with subinterfaces\n",
+ "title": "Short Esi"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "description": "VLAN ID to bridge.\nDefault is subinterface number.\n",
+ "title": "VLAN ID"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n",
+ "properties": {
+ "client_dot1q": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Client Dot1Q"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Subinterfaces"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "logging": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "link_status": {
+ "type": "boolean",
+ "title": "Link Status"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Event"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Logging"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI\n",
+ "title": "L2 MTU"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "List of switchport vlans as string\nFor a trunk port this would be a range like \"1-200,300\"\nFor an access port this would be a single vlan \"123\"\n",
+ "title": "VLANs"
+ },
+ "snmp_trap_link_change": {
+ "type": "boolean",
+ "title": "Snmp Trap Link Change"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "routed",
+ "switched",
+ "l3dot1q",
+ "l2dot1q"
+ ],
+ "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n",
+ "title": "Type"
+ },
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "VLAN tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "properties": {
+ "client": {
+ "type": "object",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Client VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Client Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Client Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "unmatched": {
+ "type": "boolean",
+ "title": "Unmatched"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Client"
+ },
+ "network": {
+ "type": "object",
+ "description": "Network encapsulation are all optional, and skipped if using client unmatched",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Network VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Network Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Network Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "client": {
+ "type": "boolean",
+ "title": "Client"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Network"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN ID"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "title": "Mode"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "default": false,
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN Tag"
+ },
+ "link_tracking_groups": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Group name",
+ "title": "Name"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "upstream",
+ "downstream"
+ ],
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Link Tracking Groups"
+ },
+ "phone": {
+ "type": "object",
+ "properties": {
+ "trunk": {
+ "type": "string",
+ "enum": [
+ "tagged",
+ "untagged"
+ ],
+ "title": "Trunk"
+ },
+ "vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Phone"
+ },
+ "l2_protocol": {
+ "type": "object",
+ "properties": {
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "Vlan tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "forwarding_profile": {
+ "type": "string",
+ "description": "L2 protocol forwarding profile",
+ "title": "Forwarding Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "L2 Protocol"
+ },
+ "mtu": {
+ "type": "integer",
+ "title": "MTU"
+ },
+ "mlag": {
+ "type": "integer",
+ "description": "MLAG ID",
+ "minimum": 1,
+ "maximum": 2000,
+ "title": "MLAG"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Trunk Groups"
+ },
+ "lacp_fallback_timeout": {
+ "type": "integer",
+ "description": "Timeout in seconds",
+ "default": 90,
+ "minimum": 0,
+ "maximum": 300,
+ "title": "LACP Fallback Timeout"
+ },
+ "lacp_fallback_mode": {
+ "type": "string",
+ "enum": [
+ "individual",
+ "static"
+ ],
+ "title": "LACP Fallback Mode"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "trust": {
+ "type": "string",
+ "enum": [
+ "dscp",
+ "cos",
+ "disabled"
+ ],
+ "title": "Trust"
+ },
+ "dscp": {
+ "type": "integer",
+ "description": "DSCP value",
+ "title": "DSCP"
+ },
+ "cos": {
+ "type": "integer",
+ "description": "COS value",
+ "title": "COS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Interval in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Policy Based Routing Policy-map name",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Quality of Service Policy-map name",
+ "title": "Input"
+ }
+ },
+ "required": [
+ "input"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "boolean",
+ "title": "IP"
+ },
+ "ldp": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "boolean",
+ "title": "Interface"
+ },
+ "igp_sync": {
+ "type": "boolean",
+ "title": "IGP Sync"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LDP"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "trunk_private_vlan_secondary": {
+ "type": "boolean",
+ "title": "Trunk Private VLAN Secondary"
+ },
+ "pvlan_mapping": {
+ "type": "string",
+ "description": "List of vlans as string",
+ "title": "PVLAN Mapping"
+ },
+ "vlan_translations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "List of vlans as string (only one vlan if direction is \"both\")",
+ "title": "From"
+ },
+ "to": {
+ "type": "integer",
+ "description": "VLAN ID",
+ "title": "To"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "in",
+ "out",
+ "both"
+ ],
+ "default": "both",
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "VLAN Translations"
+ },
+ "shape": {
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "string",
+ "description": "Rate in kbps, pps or percent\nSupported options are platform dependent\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n",
+ "title": "Rate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shape"
+ },
+ "storm_control": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "isis_enable": {
+ "type": "string",
+ "description": "ISIS instance",
+ "title": "ISIS Enable"
+ },
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "isis_circuit_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "level-2"
+ ],
+ "title": "ISIS Circuit Type"
+ },
+ "isis_hello_padding": {
+ "type": "boolean",
+ "title": "ISIS Hello Padding"
+ },
+ "isis_authentication_mode": {
+ "type": "string",
+ "enum": [
+ "text",
+ "md5"
+ ],
+ "title": "ISIS Authentication Mode"
+ },
+ "isis_authentication_key": {
+ "type": "string",
+ "description": "Type-7 encrypted password",
+ "title": "ISIS Authentication Key"
+ },
+ "traffic_policy": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Ingress traffic policy",
+ "title": "Input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Egress traffic policy",
+ "title": "Output"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Traffic Policy"
+ },
+ "evpn_ethernet_segment": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)",
+ "title": "Identifier"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "title": "Redundancy"
+ },
+ "designated_forwarder_election": {
+ "type": "object",
+ "properties": {
+ "algorithm": {
+ "type": "string",
+ "enum": [
+ "modulus",
+ "preference"
+ ],
+ "title": "Algorithm"
+ },
+ "preference_value": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "description": "Preference_value is only used when \"algorithm\" is \"preference\"",
+ "title": "Preference Value"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Dont_preempt is only used when \"algorithm\" is \"preference\"",
+ "default": false,
+ "title": "Dont Preempt"
+ },
+ "hold_time": {
+ "type": "integer",
+ "title": "Hold Time"
+ },
+ "subsequent_hold_time": {
+ "type": "integer",
+ "title": "Subsequent Hold Time"
+ },
+ "candidate_reachability_required": {
+ "type": "boolean",
+ "title": "Candidate Reachability Required"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Designated Forwarder Election"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "shared_index": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 1024,
+ "title": "Shared Index"
+ },
+ "tunnel_flood_filter_time": {
+ "type": "integer",
+ "title": "Tunnel Flood Filter Time"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "route_target": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Ethernet Segment"
+ },
+ "esi": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)\nIf both \"esi\" and \"evpn_ethernet_segment.identifier\" are defined, the new variable takes precedence\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.identifier instead.",
+ "deprecated": true,
+ "title": "Esi"
+ },
+ "rt": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx\nIf both \"rt\" and \"evpn_ethernet_segment.route_target\" are defined, the new variable takes precedence\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use evpn_ethernet_segment.route_target instead.",
+ "deprecated": true,
+ "title": "Rt"
+ },
+ "lacp_id": {
+ "type": "string",
+ "description": "LACP ID with format xxxx.xxxx.xxxx",
+ "title": "LACP ID"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "spanning_tree_guard": {
+ "type": "string",
+ "enum": [
+ "loop",
+ "root",
+ "disabled"
+ ],
+ "title": "Spanning Tree Guard"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "vmtracer": {
+ "type": "boolean",
+ "title": "VMTracer"
+ },
+ "ptp": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "announce": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ },
+ "timeout": {
+ "type": "integer",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Announce"
+ },
+ "delay_req": {
+ "type": "integer",
+ "title": "Delay Req"
+ },
+ "delay_mechanism": {
+ "type": "string",
+ "enum": [
+ "e2e",
+ "p2p"
+ ],
+ "title": "Delay Mechanism"
+ },
+ "sync_message": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sync Message"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "master",
+ "dynamic"
+ ],
+ "title": "Role"
+ },
+ "vlan": {
+ "type": "string",
+ "description": "VLAN can be 'all' or list of vlans as string",
+ "title": "VLAN"
+ },
+ "transport": {
+ "type": "string",
+ "enum": [
+ "ipv4",
+ "ipv6",
+ "layer2"
+ ],
+ "title": "Transport"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4 address/mask",
+ "title": "IP Address"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
+ },
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Nat"
+ },
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
+ },
+ "ipv6_address": {
+ "type": "string",
+ "description": "IPv6 address/mask",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "Link local IPv6 address/mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_nd_ra_disabled": {
+ "type": "boolean",
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
+ "type": "boolean",
+ "title": "IPv6 ND Managed Config Flag"
+ },
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "access_group_in": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group In"
+ },
+ "access_group_out": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group Out"
+ },
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "mac_access_group_in": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group In"
+ },
+ "mac_access_group_out": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group Out"
+ },
+ "pim": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PIM"
+ },
+ "service_profile": {
+ "type": "string",
+ "description": "QOS profile",
+ "title": "Service Profile"
+ },
+ "ospf_network_point_to_point": {
+ "type": "boolean",
+ "title": "OSPF Network Point To Point"
+ },
+ "ospf_area": {
+ "type": "string",
+ "title": "OSPF Area"
+ },
+ "ospf_cost": {
+ "type": "integer",
+ "title": "OSPF Cost"
+ },
+ "ospf_authentication": {
+ "type": "string",
+ "enum": [
+ "none",
+ "simple",
+ "message-digest"
+ ],
+ "title": "OSPF Authentication"
+ },
+ "ospf_authentication_key": {
+ "type": "string",
+ "description": "Encrypted password",
+ "title": "OSPF Authentication Key"
+ },
+ "ospf_message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Encrypted password",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
+ },
+ "flow_tracker": {
+ "type": "object",
+ "properties": {
+ "sampled": {
+ "type": "string",
+ "description": "Flow tracker name",
+ "title": "Sampled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flow Tracker"
+ },
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "session_tracker": {
+ "type": "string",
+ "description": "Name of session tracker",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
+ "peer": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer"
+ },
+ "peer_interface": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Interface"
+ },
+ "peer_type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Type"
+ },
+ "sflow": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "egress": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "unmodified_enable": {
+ "type": "boolean",
+ "title": "Unmodified Enable"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sflow"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the port-channel interface in the final EOS configuration",
+ "title": "EOS CLI"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Port Channel"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "load_interval": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 600,
+ "description": "Interval in seconds for updating interface counters\"",
+ "title": "Load Interval"
+ },
+ "speed": {
+ "type": "string",
+ "description": "Speed can be interface_speed or forced interface_speed or auto interface_speed",
+ "title": "Speed"
+ },
+ "mtu": {
+ "type": "integer",
+ "title": "MTU"
+ },
+ "l2_mtu": {
+ "type": "integer",
+ "description": "\"l2_mtu\" should only be defined for platforms supporting the \"l2 mtu\" CLI\n",
+ "title": "L2 MTU"
+ },
+ "vlans": {
+ "type": "string",
+ "description": "List of switchport vlans as string\nFor a trunk port this would be a range like \"1-200,300\"\nFor an access port this would be a single vlan \"123\"\n",
+ "title": "VLANs"
+ },
+ "native_vlan": {
+ "type": "integer",
+ "title": "Native VLAN"
+ },
+ "native_vlan_tag": {
+ "type": "boolean",
+ "description": "If setting both native_vlan and native_vlan_tag, native_vlan_tag takes precedence",
+ "title": "Native VLAN Tag"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "access",
+ "dot1q-tunnel",
+ "trunk",
+ "trunk phone"
+ ],
+ "title": "Mode"
+ },
+ "phone": {
+ "type": "object",
+ "properties": {
+ "trunk": {
+ "type": "string",
+ "enum": [
+ "tagged",
+ "tagged phone",
+ "untagged",
+ "untagged phone"
+ ],
+ "title": "Trunk"
+ },
+ "vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Phone"
+ },
+ "l2_protocol": {
+ "type": "object",
+ "properties": {
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "Vlan tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "forwarding_profile": {
+ "type": "string",
+ "description": "L2 protocol forwarding profile",
+ "title": "Forwarding Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "L2 Protocol"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Trunk Groups"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "routed",
+ "switched",
+ "l3dot1q",
+ "l2dot1q",
+ "port-channel-member"
+ ],
+ "description": "l3dot1q and l2dot1q are used for sub-interfaces. The parent interface should be defined as routed.\nInterface will not be listed in device documentation, unless \"type\" is set.\n",
+ "title": "Type"
+ },
+ "snmp_trap_link_change": {
+ "type": "boolean",
+ "title": "Snmp Trap Link Change"
+ },
+ "address_locking": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "boolean",
+ "description": "Enable address locking for IPv4",
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "boolean",
+ "description": "Enable address locking for IPv6",
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Address Locking"
+ },
+ "flowcontrol": {
+ "type": "object",
+ "properties": {
+ "received": {
+ "type": "string",
+ "enum": [
+ "desired",
+ "on",
+ "off"
+ ],
+ "title": "Received"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flowcontrol"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "flow_tracker": {
+ "type": "object",
+ "properties": {
+ "sampled": {
+ "type": "string",
+ "description": "Flow tracker name",
+ "title": "Sampled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Flow Tracker"
+ },
+ "error_correction_encoding": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "title": "Enabled"
+ },
+ "fire_code": {
+ "type": "boolean",
+ "title": "Fire Code"
+ },
+ "reed_solomon": {
+ "type": "boolean",
+ "title": "Reed Solomon"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Error Correction Encoding"
+ },
+ "link_tracking_groups": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Group name",
+ "title": "Name"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "upstream",
+ "downstream"
+ ],
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Link Tracking Groups"
+ },
+ "evpn_ethernet_segment": {
+ "type": "object",
+ "properties": {
+ "identifier": {
+ "type": "string",
+ "description": "EVPN Ethernet Segment Identifier (Type 1 format)",
+ "title": "Identifier"
+ },
+ "redundancy": {
+ "type": "string",
+ "enum": [
+ "all-active",
+ "single-active"
+ ],
+ "title": "Redundancy"
+ },
+ "designated_forwarder_election": {
+ "type": "object",
+ "properties": {
+ "algorithm": {
+ "type": "string",
+ "enum": [
+ "modulus",
+ "preference"
+ ],
+ "title": "Algorithm"
+ },
+ "preference_value": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "description": "Preference_value is only used when \"algorithm\" is \"preference\"",
+ "title": "Preference Value"
+ },
+ "dont_preempt": {
+ "type": "boolean",
+ "description": "Dont_preempt is only used when \"algorithm\" is \"preference\"",
+ "title": "Dont Preempt"
+ },
+ "hold_time": {
+ "type": "integer",
+ "title": "Hold Time"
+ },
+ "subsequent_hold_time": {
+ "type": "integer",
+ "title": "Subsequent Hold Time"
+ },
+ "candidate_reachability_required": {
+ "type": "boolean",
+ "title": "Candidate Reachability Required"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Designated Forwarder Election"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "shared_index": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 1024,
+ "title": "Shared Index"
+ },
+ "tunnel_flood_filter_time": {
+ "type": "integer",
+ "title": "Tunnel Flood Filter Time"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MPLS"
+ },
+ "route_target": {
+ "type": "string",
+ "description": "EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN Ethernet Segment"
+ },
+ "encapsulation_dot1q_vlan": {
+ "type": "integer",
+ "description": "VLAN tag to configure on sub-interface",
+ "title": "Encapsulation Dot1Q VLAN"
+ },
+ "encapsulation_vlan": {
+ "type": "object",
+ "properties": {
+ "client": {
+ "type": "object",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Client VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Client Outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Client Inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "unmatched": {
+ "type": "boolean",
+ "title": "Unmatched"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Client"
+ },
+ "network": {
+ "type": "object",
+ "description": "Network encapsulations are all optional and skipped if using client unmatched",
+ "properties": {
+ "dot1q": {
+ "type": "object",
+ "properties": {
+ "vlan": {
+ "type": "integer",
+ "description": "Network VLAN ID",
+ "title": "VLAN"
+ },
+ "outer": {
+ "type": "integer",
+ "description": "Network outer VLAN ID",
+ "title": "Outer"
+ },
+ "inner": {
+ "type": "integer",
+ "description": "Network inner VLAN ID",
+ "title": "Inner"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Dot1Q"
+ },
+ "client": {
+ "type": "boolean",
+ "title": "Client"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Network"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Encapsulation VLAN"
+ },
+ "vlan_id": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "VLAN ID"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4 address/mask",
+ "title": "IP Address"
+ },
+ "ip_address_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "IP Address Secondaries"
+ },
+ "ip_helpers": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip_helper": {
+ "type": "string",
+ "title": "IP Helper"
+ },
+ "source_interface": {
+ "type": "string",
+ "description": "Source interface name",
+ "title": "Source Interface"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ip_helper"
+ ]
+ },
+ "title": "IP Helpers"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
+ },
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Nat"
+ },
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
+ },
+ "ipv6_address": {
+ "type": "string",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "Link local IPv6 address/mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_nd_ra_disabled": {
+ "type": "boolean",
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
+ "type": "boolean",
+ "title": "IPv6 ND Managed Config Flag"
+ },
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "Infinite or lifetime in seconds",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "ipv6_dhcp_relay_destinations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "DHCP server's IPv6 address",
+ "title": "Address"
+ },
+ "vrf": {
+ "type": "string",
+ "title": "VRF"
+ },
+ "local_interface": {
+ "type": "string",
+ "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address",
+ "title": "Local Interface"
+ },
+ "source_address": {
+ "type": "string",
+ "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface",
+ "title": "Source Address"
+ },
+ "link_address": {
+ "type": "string",
+ "description": "Override the default link address specified in the relayed DHCP packet",
+ "title": "Link Address"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "address"
+ ]
+ },
+ "title": "IPv6 DHCP Relay Destinations"
+ },
+ "access_group_in": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group In"
+ },
+ "access_group_out": {
+ "type": "string",
+ "description": "Access list name",
+ "title": "Access Group Out"
+ },
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "mac_access_group_in": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group In"
+ },
+ "mac_access_group_out": {
+ "type": "string",
+ "description": "MAC access list name",
+ "title": "MAC Access Group Out"
+ },
+ "multicast": {
+ "type": "object",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "ACL name or multicast IP subnet",
+ "title": "Boundary"
+ },
+ "out": {
+ "type": "boolean",
+ "title": "Out"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Boundaries"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "ACL name or multicast IP subnet",
+ "title": "Boundary"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Boundaries"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "ospf_network_point_to_point": {
+ "type": "boolean",
+ "title": "OSPF Network Point To Point"
+ },
+ "ospf_area": {
+ "type": "string",
+ "title": "OSPF Area"
+ },
+ "ospf_cost": {
+ "type": "integer",
+ "title": "OSPF Cost"
+ },
+ "ospf_authentication": {
+ "type": "string",
+ "enum": [
+ "none",
+ "simple",
+ "message-digest"
+ ],
+ "title": "OSPF Authentication"
+ },
+ "ospf_authentication_key": {
+ "type": "string",
+ "description": "Encrypted password - only type 7 supported",
+ "title": "OSPF Authentication Key"
+ },
+ "ospf_message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Encrypted password - only type 7 supported",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
+ },
+ "pim": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PIM"
+ },
+ "mac_security": {
+ "type": "object",
+ "properties": {
+ "profile": {
+ "type": "string",
+ "title": "Profile"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Security"
+ },
+ "channel_group": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "on",
+ "active",
+ "passive"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Channel Group"
+ },
+ "isis_enable": {
+ "type": "string",
+ "description": "ISIS instance",
+ "title": "ISIS Enable"
+ },
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "isis_circuit_type": {
+ "type": "string",
+ "enum": [
+ "level-1-2",
+ "level-1",
+ "level-2"
+ ],
+ "title": "ISIS Circuit Type"
+ },
+ "isis_hello_padding": {
+ "type": "boolean",
+ "title": "ISIS Hello Padding"
+ },
+ "isis_authentication_mode": {
+ "type": "string",
+ "enum": [
+ "text",
+ "md5"
+ ],
+ "title": "ISIS Authentication Mode"
+ },
+ "isis_authentication_key": {
+ "type": "string",
+ "description": "Type-7 encrypted password",
+ "title": "ISIS Authentication Key"
+ },
+ "poe": {
+ "type": "object",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
+ "default": false,
+ "title": "Disabled"
+ },
+ "priority": {
+ "type": "string",
+ "enum": [
+ "critical",
+ "high",
+ "medium",
+ "low"
+ ],
+ "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
+ "title": "Priority"
+ },
+ "reboot": {
+ "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Reboot"
+ },
+ "link_down": {
+ "description": "Set the PoE power behavior for a PoE port when the port goes down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ },
+ "power_off_delay": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 86400,
+ "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
+ "title": "Power Off Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Link Down"
+ },
+ "shutdown": {
+ "description": "Set the PoE power behavior for a PoE port when the port is admin down",
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "maintain",
+ "power-off"
+ ],
+ "description": "PoE action for interface",
+ "title": "Action"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shutdown"
+ },
+ "limit": {
+ "type": "object",
+ "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
+ "properties": {
+ "class": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 8,
+ "title": "Class"
+ },
+ "watts": {
+ "type": "string",
+ "title": "Watts"
+ },
+ "fixed": {
+ "type": "boolean",
+ "description": "Set to ignore hardware classification",
+ "title": "Fixed"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Limit"
+ },
+ "negotiation_lldp": {
+ "type": "boolean",
+ "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
+ "title": "Negotiation LLDP"
+ },
+ "legacy_detect": {
+ "type": "boolean",
+ "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
+ "title": "Legacy Detect"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PoE"
+ },
+ "ptp": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "announce": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ },
+ "timeout": {
+ "type": "integer",
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Announce"
+ },
+ "delay_req": {
+ "type": "integer",
+ "title": "Delay Req"
+ },
+ "delay_mechanism": {
+ "type": "string",
+ "enum": [
+ "e2e",
+ "p2p"
+ ],
+ "title": "Delay Mechanism"
+ },
+ "sync_message": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sync Message"
+ },
+ "role": {
+ "type": "string",
+ "enum": [
+ "master",
+ "dynamic"
+ ],
+ "title": "Role"
+ },
+ "vlan": {
+ "type": "string",
+ "description": "VLAN can be 'all' or list of vlans as string",
+ "title": "VLAN"
+ },
+ "transport": {
+ "type": "string",
+ "enum": [
+ "ipv4",
+ "ipv6",
+ "layer2"
+ ],
+ "title": "Transport"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
+ },
+ "profile": {
+ "type": "string",
+ "description": "Interface profile",
+ "title": "Profile"
+ },
+ "storm_control": {
+ "type": "object",
+ "properties": {
+ "all": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "All"
+ },
+ "broadcast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Broadcast"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "unknown_unicast": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "string",
+ "description": "Configure maximum storm-control level",
+ "title": "Level"
+ },
+ "unit": {
+ "type": "string",
+ "default": "percent",
+ "enum": [
+ "percent",
+ "pps"
+ ],
+ "description": "Optional field and is hardware dependant",
+ "title": "Unit"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unknown Unicast"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Storm Control"
+ },
+ "logging": {
+ "type": "object",
+ "properties": {
+ "event": {
+ "type": "object",
+ "properties": {
+ "link_status": {
+ "type": "boolean",
+ "title": "Link Status"
+ },
+ "congestion_drops": {
+ "type": "boolean",
+ "title": "Congestion Drops"
+ },
+ "spanning_tree": {
+ "type": "boolean",
+ "title": "Spanning Tree"
+ },
+ "storm_control": {
+ "type": "boolean",
+ "title": "Storm Control"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Event"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Logging"
+ },
+ "lldp": {
+ "type": "object",
+ "properties": {
+ "transmit": {
+ "type": "boolean",
+ "title": "Transmit"
+ },
+ "receive": {
+ "type": "boolean",
+ "title": "Receive"
+ },
+ "ztp_vlan": {
+ "type": "integer",
+ "description": "ZTP vlan number",
+ "title": "ZTP VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LLDP"
+ },
+ "trunk_private_vlan_secondary": {
+ "type": "boolean",
+ "title": "Trunk Private VLAN Secondary"
+ },
+ "pvlan_mapping": {
+ "type": "string",
+ "description": "List of vlans as string",
+ "title": "PVLAN Mapping"
+ },
+ "vlan_translations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "from": {
+ "type": "string",
+ "description": "List of vlans as string (only one vlan if direction is \"both\")",
+ "title": "From"
+ },
+ "to": {
+ "type": "integer",
+ "description": "VLAN ID",
+ "title": "To"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "in",
+ "out",
+ "both"
+ ],
+ "default": "both",
+ "title": "Direction"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "VLAN Translations"
+ },
+ "dot1x": {
+ "type": "object",
+ "properties": {
+ "port_control": {
+ "type": "string",
+ "enum": [
+ "auto",
+ "force-authorized",
+ "force-unauthorized"
+ ],
+ "title": "Port Control"
+ },
+ "port_control_force_authorized_phone": {
+ "type": "boolean",
+ "title": "Port Control Force Authorized Phone"
+ },
+ "reauthentication": {
+ "type": "boolean",
+ "title": "Reauthentication"
+ },
+ "pae": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "authenticator"
+ ],
+ "title": "Mode"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PAE"
+ },
+ "authentication_failure": {
+ "type": "object",
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "allow",
+ "drop"
+ ],
+ "title": "Action"
+ },
+ "allow_vlan": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 4094,
+ "title": "Allow VLAN"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure"
+ },
+ "host_mode": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "multi-host",
+ "single-host"
+ ],
+ "title": "Mode"
+ },
+ "multi_host_authenticated": {
+ "type": "boolean",
+ "title": "Multi Host Authenticated"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Host Mode"
+ },
+ "mac_based_authentication": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "always": {
+ "type": "boolean",
+ "title": "Always"
+ },
+ "host_mode_common": {
+ "type": "boolean",
+ "title": "Host Mode Common"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "MAC Based Authentication"
+ },
+ "timeout": {
+ "type": "object",
+ "properties": {
+ "idle_host": {
+ "type": "integer",
+ "minimum": 10,
+ "maximum": 65535,
+ "title": "Idle Host"
+ },
+ "quiet_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Quiet Period"
+ },
+ "reauth_period": {
+ "type": "string",
+ "description": "Value can be 60-4294967295 or 'server'",
+ "title": "Reauth Period"
+ },
+ "reauth_timeout_ignore": {
+ "type": "boolean",
+ "title": "Reauth Timeout Ignore"
+ },
+ "tx_period": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "TX Period"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timeout"
+ },
+ "reauthorization_request_limit": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Reauthorization Request Limit"
+ },
+ "unauthorized": {
+ "type": "object",
+ "properties": {
+ "access_vlan_membership_egress": {
+ "type": "boolean",
+ "title": "Access VLAN Membership Egress"
+ },
+ "native_vlan_membership_egress": {
+ "type": "boolean",
+ "title": "Native VLAN Membership Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Unauthorized"
+ },
+ "eapol": {
+ "type": "object",
+ "properties": {
+ "disabled": {
+ "type": "boolean",
+ "title": "Disabled"
+ },
+ "authentication_failure_fallback_mba": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "timeout": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Authentication Failure Fallback Mba"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Eapol"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "dot1x"
+ },
+ "service_profile": {
+ "type": "string",
+ "description": "QOS profile",
+ "title": "Service Profile"
+ },
+ "shape": {
+ "type": "object",
+ "properties": {
+ "rate": {
+ "type": "string",
+ "description": "Rate in kbps, pps or percent\nSupported options are platform dependent\nExamples:\n- \"5000 kbps\"\n- \"1000 pps\"\n- \"20 percent\"\n",
+ "title": "Rate"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Shape"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "trust": {
+ "type": "string",
+ "enum": [
+ "dscp",
+ "cos",
+ "disabled"
+ ],
+ "title": "Trust"
+ },
+ "dscp": {
+ "type": "integer",
+ "description": "DSCP value",
+ "title": "DSCP"
+ },
+ "cos": {
+ "type": "integer",
+ "description": "COS value",
+ "title": "COS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ },
+ "spanning_tree_bpdufilter": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpdufilter"
+ },
+ "spanning_tree_bpduguard": {
+ "type": "string",
+ "enum": [
+ "enabled",
+ "disabled",
+ "True",
+ "False",
+ "true",
+ "false"
+ ],
+ "title": "Spanning Tree Bpduguard"
+ },
+ "spanning_tree_guard": {
+ "type": "string",
+ "enum": [
+ "loop",
+ "root",
+ "disabled"
+ ],
+ "title": "Spanning Tree Guard"
+ },
+ "spanning_tree_portfast": {
+ "type": "string",
+ "enum": [
+ "edge",
+ "network"
+ ],
+ "title": "Spanning Tree Portfast"
+ },
+ "vmtracer": {
+ "type": "boolean",
+ "title": "VMTracer"
+ },
+ "priority_flow_control": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "priorities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 7,
+ "title": "Priority"
+ },
+ "no_drop": {
+ "type": "boolean",
+ "title": "No Drop"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "priority"
+ ]
+ },
+ "title": "Priorities"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Priority Flow Control"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Interval in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Policy Based Routing Policy-map name",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ },
+ "qos": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Quality of Service Policy-map name",
+ "title": "Input"
+ }
+ },
+ "required": [
+ "input"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "QOS"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "mpls": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "boolean",
+ "title": "IP"
+ },
+ "ldp": {
+ "type": "object",
+ "properties": {
+ "interface": {
+ "type": "boolean",
+ "title": "Interface"
+ },
+ "igp_sync": {
+ "type": "boolean",
+ "title": "IGP Sync"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LDP"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "speed_groups": {
- "type": "array",
- "items": {
- "type": "integer"
+ "title": "MPLS"
+ },
+ "lacp_timer": {
+ "type": "object",
+ "properties": {
+ "mode": {
+ "type": "string",
+ "enum": [
+ "fast",
+ "normal"
+ ],
+ "title": "Mode"
},
- "title": "Speed Groups"
- }
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 3000,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "LACP Timer"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "lacp_port_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 65535,
+ "title": "LACP Port Priority"
},
- "required": [
- "speed"
- ]
+ "transceiver": {
+ "type": "object",
+ "properties": {
+ "media": {
+ "type": "object",
+ "properties": {
+ "override": {
+ "type": "string",
+ "description": "Transceiver type",
+ "title": "Override"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Media"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Transceiver"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "traffic_policy": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Ingress traffic policy",
+ "title": "Input"
+ },
+ "output": {
+ "type": "string",
+ "description": "Egress traffic policy",
+ "title": "Output"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Traffic Policy"
+ },
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "session_tracker": {
+ "type": "string",
+ "description": "Name of session tracker",
+ "title": "Session Tracker"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
+ "peer": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer"
+ },
+ "peer_interface": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Interface"
+ },
+ "peer_type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Peer Type"
+ },
+ "sflow": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "egress": {
+ "type": "object",
+ "properties": {
+ "enable": {
+ "type": "boolean",
+ "title": "Enable"
+ },
+ "unmodified_enable": {
+ "type": "boolean",
+ "title": "Unmodified Enable"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Egress"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Sflow"
+ },
+ "port_profile": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Port Profile"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the ethernet interface in the final EOS configuration",
+ "title": "EOS CLI"
+ }
},
- "title": "Speeds"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Structured Config"
}
},
"additionalProperties": false,
@@ -4129,1980 +14170,3231 @@
"^_.+$": {}
},
"required": [
- "platform"
+ "profile"
]
},
- "title": "Platform Speed Groups"
+ "title": "Port Profiles"
},
- "pod_name": {
- "description": "POD Name is used in:\n- Fabric Documentation (Optional, falls back to dc_name and then to fabric_name)\n- SNMP Location: `snmp_settings.location` (Optional)\n- VRF Loopbacks: `vtep_diagnostic.loopback_ip_pools.pod` (Required)\n\nRecommended to be common between Spines and Leafs within a POD (One l3ls topology).\n",
- "type": "string",
- "title": "Pod Name"
+ "ptp": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "profile": {
+ "type": "string",
+ "enum": [
+ "aes67",
+ "smpte2059-2",
+ "aes67-r16-2016"
+ ],
+ "default": "aes67-r16-2016",
+ "title": "Profile"
+ },
+ "domain": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 255,
+ "title": "Domain"
+ },
+ "auto_clock_identity": {
+ "type": "boolean",
+ "default": true,
+ "title": "Auto Clock Identity"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PTP"
},
- "port_profiles": {
+ "ptp_profiles": {
"type": "array",
- "description": "Optional profiles to share common settings for connected_endpoints and/or network_ports.\nKeys are the same used under endpoints adapters. Keys defined under endpoints adapters take precedence.\n",
"items": {
"type": "object",
"properties": {
"profile": {
"type": "string",
- "description": "Port profile name.",
+ "description": "PTP profile.",
"title": "Profile"
},
- "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).",
- "title": "Parent Profile"
- },
- "speed": {
- "type": "string",
- "description": "Set adapter speed: `< interface_speed >`, `forced < interface_speed >`, `auto < interface_speed >`.\nIf not specified will be auto.\n",
- "title": "Speed"
- },
- "description": {
- "type": "string",
- "description": "By default the description is built leveraging `_`.\nWhen set this key will overide the default value on the physical ports.\n",
- "title": "Description"
- },
- "enabled": {
- "type": "boolean",
- "description": "Administrative state, setting to false will set the port to 'shutdown' in the intended configuration.\n",
- "default": true,
- "title": "Enabled"
- },
- "mode": {
- "type": "string",
- "enum": [
- "access",
- "dot1q-tunnel",
- "trunk",
- "trunk phone"
- ],
- "description": "Interface mode.",
- "title": "Mode"
- },
- "mtu": {
- "type": "integer",
- "minimum": 68,
- "maximum": 65535,
- "title": "MTU"
- },
- "l2_mtu": {
- "type": "integer",
- "minimum": 68,
- "maximum": 9416,
- "description": "This should only be defined for platforms supporting the \"l2 mtu\" CLI command.",
- "title": "L2 MTU"
- },
- "native_vlan": {
- "type": "integer",
- "description": "Native VLAN for a trunk port.\nIf both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.\n",
- "minimum": 1,
- "maximum": 4094,
- "title": "Native VLAN"
- },
- "native_vlan_tag": {
- "type": "boolean",
- "default": false,
- "description": "If both `native_vlan` and `native_vlan_tag`, `native_vlan_tag` takes precedence.",
- "title": "Native VLAN Tag"
- },
- "trunk_groups": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Required with `enable_trunk_groups: true`.\nTrunk Groups are used for limiting VLANs on trunk ports to VLANs with the same Trunk Group.\n",
- "title": "Trunk Groups"
- },
- "vlans": {
- "type": "string",
- "description": "Interface VLANs - if not set, the EOS default is that all VLANs are allowed for trunk ports, and VLAN 1 will be used for access ports.",
- "title": "VLANs"
- },
- "spanning_tree_portfast": {
- "type": "string",
- "enum": [
- "edge",
- "network"
- ],
- "title": "Spanning Tree Portfast"
- },
- "spanning_tree_bpdufilter": {
- "type": "string",
- "enum": [
- "enabled",
- "disabled",
- "True",
- "False",
- "true",
- "false"
- ],
- "title": "Spanning Tree Bpdufilter"
+ "announce": {
+ "type": "object",
+ "description": "PTP announce interval.",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "minimum": -7,
+ "maximum": 4,
+ "title": "Interval"
+ },
+ "timeout": {
+ "type": "integer",
+ "minimum": 2,
+ "maximum": 255,
+ "title": "Timeout"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Announce"
},
- "spanning_tree_bpduguard": {
- "type": "string",
- "enum": [
- "enabled",
- "disabled",
- "True",
- "False",
- "true",
- "false"
- ],
- "title": "Spanning Tree Bpduguard"
+ "delay_req": {
+ "type": "integer",
+ "minimum": -7,
+ "maximum": 8,
+ "title": "Delay Req"
},
- "flowcontrol": {
+ "sync_message": {
"type": "object",
+ "description": "PTP sync message interval.",
"properties": {
- "received": {
- "type": "string",
- "enum": [
- "received",
- "send",
- "on"
- ],
- "title": "Received"
+ "interval": {
+ "type": "integer",
+ "minimum": -7,
+ "maximum": 3,
+ "title": "Interval"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Flowcontrol"
+ "title": "Sync Message"
},
- "qos_profile": {
+ "transport": {
"type": "string",
- "description": "QOS profile name",
- "title": "QOS Profile"
+ "enum": [
+ "ipv4"
+ ],
+ "title": "Transport"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "default": [
+ {
+ "announce": {
+ "interval": 0,
+ "timeout": 3
},
- "ptp": {
+ "delay_req": -3,
+ "profile": "aes67-r16-2016",
+ "sync_message": {
+ "interval": -3
+ },
+ "transport": "ipv4"
+ },
+ {
+ "announce": {
+ "interval": -2,
+ "timeout": 3
+ },
+ "delay_req": -4,
+ "profile": "smpte2059-2",
+ "sync_message": {
+ "interval": -4
+ },
+ "transport": "ipv4"
+ },
+ {
+ "announce": {
+ "interval": 2,
+ "timeout": 3
+ },
+ "delay_req": 0,
+ "profile": "aes67",
+ "sync_message": {
+ "interval": 0
+ },
+ "transport": "ipv4"
+ }
+ ],
+ "title": "PTP Profiles"
+ },
+ "queue_monitor_length": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "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.",
+ "title": "Notifying"
+ },
+ "default_thresholds": {
+ "type": "object",
+ "properties": {
+ "high": {
+ "type": "integer",
+ "description": "Default high threshold for Ethernet Interfaces.\n",
+ "title": "High"
+ },
+ "low": {
+ "type": "integer",
+ "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n",
+ "title": "Low"
+ }
+ },
+ "required": [
+ "high"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Default Thresholds"
+ },
+ "log": {
+ "type": "integer",
+ "description": "Logging interval in seconds",
+ "title": "Log"
+ },
+ "cpu": {
+ "type": "object",
+ "properties": {
+ "thresholds": {
+ "type": "object",
+ "properties": {
+ "high": {
+ "type": "integer",
+ "title": "High"
+ },
+ "low": {
+ "type": "integer",
+ "title": "Low"
+ }
+ },
+ "required": [
+ "high"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Thresholds"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "CPU"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Queue Monitor Length"
+ },
+ "redundancy": {
+ "type": "object",
+ "description": "Redundancy for chassis platforms with dual supervisors | Optional.",
+ "properties": {
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "sso",
+ "rpr"
+ ],
+ "title": "Protocol"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Redundancy"
+ },
+ "serial_number": {
+ "description": "Serial Number of the device.\nUsed for documentation purpose in the fabric documentation as can also be used by the 'eos_config_deploy_cvp' role.\n\"serial_number\" can also be set directly under node type settings.\nIf both are set, the value under node type settings takes precedence.\n",
+ "type": "string",
+ "title": "Serial Number"
+ },
+ "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.",
+ "title": "Shutdown Interfaces Towards Undeployed Peers"
+ },
+ "snmp_settings": {
+ "type": "object",
+ "description": "Set SNMP settings (optional).",
+ "properties": {
+ "contact": {
+ "type": "string",
+ "description": "SNMP contact.",
+ "title": "Contact"
+ },
+ "location": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set SNMP location. Formatted as \" \".",
+ "title": "Location"
+ },
+ "compute_local_engineid": {
+ "type": "boolean",
+ "default": false,
+ "description": "Generate a local engineId for SNMP using the 'compute_local_engineid_source' method.\n",
+ "title": "Compute Local Engineid"
+ },
+ "compute_local_engineid_source": {
+ "type": "string",
+ "default": "hostname_and_ip",
+ "description": "`compute_local_engineid_source` supports:\n- `hostname_and_ip` generate a local engineId for SNMP by hashing via SHA1\n the string generated via the concatenation of the hostname plus the management IP.\n {{ inventory_hostname }} + {{ switch.mgmt_ip }}.\n- `system_mac` generate the switch default engine id for AVD usage.\n To use this, `system_mac_address` MUST be set for the device.\n The formula is f5717f + system_mac_address + 00.\n",
+ "enum": [
+ "hostname_and_ip",
+ "system_mac"
+ ],
+ "title": "Compute Local Engineid Source"
+ },
+ "compute_v3_user_localized_key": {
+ "type": "boolean",
+ "default": false,
+ "description": "Requires compute_local_engineid to be `true`.\nIf enabled, the SNMPv3 passphrases for auth and priv are transformed using RFC 2574, matching the value they would take in EOS CLI.\nThe algorithm requires a local engineId, which is unknown to AVD, hence the necessity to generate one beforehand.\n",
+ "title": "Compute V3 User Localized Key"
+ },
+ "users": {
+ "type": "array",
+ "items": {
"type": "object",
- "description": "The global PTP profile parameters will be applied to all connected endpoints where `ptp` is manually enabled.\n`ptp role master` is set to ensure control over the PTP topology.\n",
"properties": {
- "enabled": {
- "type": "boolean",
- "default": false,
- "title": "Enabled"
+ "name": {
+ "type": "string",
+ "description": "Username",
+ "title": "Name"
},
- "endpoint_role": {
+ "group": {
+ "type": "string",
+ "description": "Configuration of the SNMP User Groups are currently only possible using `structured_config`.\n",
+ "title": "Group"
+ },
+ "version": {
"type": "string",
- "default": "follower",
"enum": [
- "bmca",
- "default",
- "follower"
+ "v1",
+ "v2c",
+ "v3"
],
- "title": "Endpoint Role"
+ "title": "Version"
},
- "profile": {
+ "auth": {
"type": "string",
- "default": "aes67-r16-2016",
"enum": [
- "aes67",
- "aes67-r16-2016",
- "smpte2059-2"
+ "md5",
+ "sha",
+ "sha256",
+ "sha384",
+ "sha512"
],
- "title": "Profile"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PTP"
- },
- "sflow": {
- "type": "boolean",
- "description": "Configures sFlow on the interface. Overrides `fabric_sflow` setting.\n",
- "title": "Sflow"
- },
- "link_tracking": {
- "type": "object",
- "description": "Configure the downstream interfaces of a respective Link Tracking Group.\nIf `port_channel` is defined in an adapter, then the port-channel interface is configured to be the downstream.\nElse all the ethernet interfaces will be configured as downstream -> to configure single-active EVPN multihomed networks.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
+ "title": "Auth"
},
- "name": {
+ "auth_passphrase": {
"type": "string",
- "description": "Tracking group name.\nThe default group name is taken from fabric variable of the switch, `link_tracking.groups[0].name` with default value being \"LT_GROUP1\".\nOptional if default link_tracking settings are configured on the node.\n",
- "title": "Name"
+ "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'auth' to be set.",
+ "title": "Auth Passphrase"
+ },
+ "priv": {
+ "type": "string",
+ "enum": [
+ "des",
+ "aes",
+ "aes192",
+ "aes256"
+ ],
+ "title": "Priv"
+ },
+ "priv_passphrase": {
+ "type": "string",
+ "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'priv' to be set.",
+ "title": "Priv Passphrase"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- },
- "title": "Link Tracking"
+ }
},
- "dot1x": {
- "type": "object",
- "description": "802.1x",
- "properties": {
- "port_control": {
- "type": "string",
- "enum": [
- "auto",
- "force-authorized",
- "force-unauthorized"
- ],
- "title": "Port Control"
- },
- "port_control_force_authorized_phone": {
- "type": "boolean",
- "title": "Port Control Force Authorized Phone"
- },
- "reauthentication": {
- "type": "boolean",
- "title": "Reauthentication"
- },
- "pae": {
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "authenticator"
- ],
- "title": "Mode"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PAE"
- },
- "authentication_failure": {
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "allow",
- "drop"
- ],
- "title": "Action"
- },
- "allow_vlan": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4094,
- "title": "Allow VLAN"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Authentication Failure"
- },
- "host_mode": {
- "type": "object",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "multi-host",
- "single-host"
- ],
- "title": "Mode"
- },
- "multi_host_authenticated": {
- "type": "boolean",
- "title": "Multi Host Authenticated"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Host Mode"
- },
- "mac_based_authentication": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "always": {
- "type": "boolean",
- "title": "Always"
- },
- "host_mode_common": {
- "type": "boolean",
- "title": "Host Mode Common"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "title": "Users"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Snmp Settings"
+ },
+ "svi_profiles": {
+ "type": "array",
+ "description": "Profiles to share common settings for SVIs under `.[].vrfs.svis`.\nKeys are the same used under SVIs. Keys defined under SVIs take precedence.\nNote: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:\n1. svi.nodes[inventory_hostname].structured_config\n2. svi_profile.nodes[inventory_hostname].structured_config\n3. svi_parent_profile.nodes[inventory_hostname].structured_config\n4. svi.structured_config\n5. svi_profile.structured_config\n6. svi_parent_profile.structured_config\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "profile": {
+ "type": "string",
+ "description": "Profile name",
+ "title": "Profile"
+ },
+ "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).",
+ "title": "Parent Profile"
+ },
+ "nodes": {
+ "type": "array",
+ "description": "Define node specific configuration, such as unique IP addresses.\nAny keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.\n",
+ "items": {
+ "type": "object",
+ "properties": {
+ "node": {
+ "type": "string",
+ "description": "l3_leaf inventory hostname",
+ "title": "Node"
},
- "title": "MAC Based Authentication"
- },
- "timeout": {
- "type": "object",
- "properties": {
- "idle_host": {
- "type": "integer",
- "minimum": 10,
- "maximum": 65535,
- "title": "Idle Host"
- },
- "quiet_period": {
- "type": "integer",
- "minimum": 1,
- "maximum": 65535,
- "title": "Quiet Period"
- },
- "reauth_period": {
- "type": "string",
- "description": "Range 60-4294967295 or \"server\".",
- "title": "Reauth Period"
- },
- "reauth_timeout_ignore": {
- "type": "boolean",
- "title": "Reauth Timeout Ignore"
- },
- "tx_period": {
- "type": "integer",
- "minimum": 1,
- "maximum": 65535,
- "title": "TX Period"
- }
+ "name": {
+ "type": "string",
+ "description": "VLAN name",
+ "title": "Name"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "enabled": {
+ "type": "boolean",
+ "description": "Enable or disable interface",
+ "title": "Enabled"
},
- "title": "Timeout"
- },
- "reauthorization_request_limit": {
- "type": "integer",
- "minimum": 1,
- "maximum": 10,
- "title": "Reauthorization Request Limit"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "dot1x"
- },
- "poe": {
- "type": "object",
- "description": "Power Over Ethernet settings applied on port. Only configured if platform supports PoE.",
- "properties": {
- "disabled": {
- "type": "boolean",
- "description": "Disable PoE on a POE capable port. PoE is enabled on all ports that support it by default in EOS.",
- "default": false,
- "title": "Disabled"
- },
- "priority": {
- "type": "string",
- "enum": [
- "critical",
- "high",
- "medium",
- "low"
- ],
- "description": "Prioritize a port's power in the event that one of the switch's power supplies loses power",
- "title": "Priority"
- },
- "reboot": {
- "description": "Set the PoE power behavior for a PoE port when the system is rebooted",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- }
+ "description": {
+ "type": "string",
+ "description": "SVI description. By default set to VLAN name.\n",
+ "title": "Description"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.",
+ "title": "IP Address"
},
- "title": "Reboot"
- },
- "link_down": {
- "description": "Set the PoE power behavior for a PoE port when the port goes down",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- },
- "power_off_delay": {
- "type": "integer",
- "minimum": 1,
- "maximum": 86400,
- "description": "Number of seconds to delay shutting the power off after a link down event occurs. Default value is 5 seconds in EOS.",
- "title": "Power Off Delay"
- }
+ "ipv6_address": {
+ "type": "string",
+ "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.",
+ "title": "IPv6 Address"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ipv6_enable": {
+ "type": "boolean",
+ "description": "Explicitly enable/disable link-local IPv6 addressing.",
+ "title": "IPv6 Enable"
},
- "title": "Link Down"
- },
- "shutdown": {
- "description": "Set the PoE power behavior for a PoE port when the port is admin down",
- "type": "object",
- "properties": {
- "action": {
- "type": "string",
- "enum": [
- "maintain",
- "power-off"
- ],
- "description": "PoE action for interface",
- "title": "Action"
- }
+ "ip_address_virtual": {
+ "type": "string",
+ "description": "IPv4_address/Mask\nIPv4 VXLAN Anycast IP address\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n",
+ "title": "IP Address Virtual"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ipv6_address_virtual": {
+ "type": "string",
+ "description": "IPv6_address/Mask\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional)\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
+ "deprecated": true,
+ "title": "IPv6 Address Virtual"
},
- "title": "Shutdown"
- },
- "limit": {
- "type": "object",
- "description": "Override the hardware-negotiated power limit using either wattage or a power class. Note that if using a power class, AVD will automatically convert the class value to the wattage value corresponding to that power class.",
- "properties": {
- "class": {
- "type": "integer",
- "minimum": 0,
- "maximum": 8,
- "title": "Class"
- },
- "watts": {
+ "ipv6_address_virtuals": {
+ "type": "array",
+ "description": "IPv6 VXLAN Anycast IP addresses\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n",
+ "items": {
"type": "string",
- "title": "Watts"
+ "description": "IPv6_address/Mask"
},
- "fixed": {
- "type": "boolean",
- "description": "Set to ignore hardware classification",
- "title": "Fixed"
- }
+ "title": "IPv6 Address Virtuals"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ip_address_virtual_secondaries": {
+ "type": "array",
+ "description": "Secondary IPv4 VXLAN Anycast IP addresses",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Virtual Secondaries"
},
- "title": "Limit"
- },
- "negotiation_lldp": {
- "type": "boolean",
- "description": "Disable to prevent port from negotiating power with powered devices over LLDP. Enabled by default in EOS.",
- "title": "Negotiation LLDP"
- },
- "legacy_detect": {
- "type": "boolean",
- "description": "Allow a subset of legacy devices to work with the PoE switch. Disabled by default in EOS because it can cause false positive detections.",
- "title": "Legacy Detect"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PoE"
- },
- "storm_control": {
- "type": "object",
- "description": "Storm control settings applied on port toward the endpoint.",
- "properties": {
- "all": {
- "type": "object",
- "properties": {
- "level": {
+ "ip_virtual_router_addresses": {
+ "type": "array",
+ "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n",
+ "items": {
"type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
+ "description": "IPv4_address/Mask or IPv4_address\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n"
},
- "unit": {
+ "title": "IP Virtual Router Addresses"
+ },
+ "ipv6_virtual_router_addresses": {
+ "type": "array",
+ "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n",
+ "items": {
"type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
+ "description": "IPv6_address"
+ },
+ "title": "IPv6 Virtual Router Addresses"
+ },
+ "ip_helpers": {
+ "type": "array",
+ "description": "IP helper for DHCP relay",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip_helper": {
+ "type": "string",
+ "description": "IPv4 DHCP server IP",
+ "title": "IP Helper"
+ },
+ "source_interface": {
+ "type": "string",
+ "description": "Interface name to originate DHCP relay packets to DHCP server.",
+ "title": "Source Interface"
+ },
+ "source_vrf": {
+ "type": "string",
+ "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.",
+ "title": "Source VRF"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ip_helper"
+ ]
+ },
+ "title": "IP Helpers"
+ },
+ "vni_override": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 16777215,
+ "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n",
+ "title": "Vni Override"
+ },
+ "rt_override": {
+ "type": "string",
+ "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon seperator which will override the full RT.\n",
+ "title": "Rt Override"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "rd_override": {
+ "type": "string",
+ "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
+ "title": "Rd Override"
},
- "title": "All"
- },
- "broadcast": {
- "type": "object",
- "properties": {
- "level": {
+ "tags": {
+ "type": "array",
+ "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
+ "default": [
+ "all"
+ ],
+ "items": {
"type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
+ "description": "Tag value."
},
- "unit": {
+ "title": "Tags"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
"type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
+ "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n"
+ },
+ "title": "Trunk Groups"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "evpn_l2_multicast": {
+ "type": "object",
+ "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN L2 Multicast"
},
- "title": "Broadcast"
- },
- "multicast": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
+ "evpn_l3_multicast": {
+ "type": "object",
+ "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ }
},
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN L3 Multicast"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "igmp_snooping_enabled": {
+ "type": "boolean",
+ "description": "Enable IGMP Snooping (Enabled by default on EOS).",
+ "title": "IGMP Snooping Enabled"
},
- "title": "Multicast"
- },
- "unknown_unicast": {
- "type": "object",
- "properties": {
- "level": {
- "type": "string",
- "description": "Configure maximum storm-control level.",
- "title": "Level"
+ "igmp_snooping_querier": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Will be enabled automatically if evpn_l2_multicast is enabled.",
+ "title": "Enabled"
+ },
+ "source_address": {
+ "type": "string",
+ "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n",
+ "title": "Source Address"
+ },
+ "version": {
+ "type": "integer",
+ "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "title": "Version"
+ }
},
- "unit": {
- "type": "string",
- "enum": [
- "percent",
- "pps"
- ],
- "default": "percent",
- "description": "Optional variable and is hardware dependent.",
- "title": "Unit"
- }
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IGMP Snooping Querier"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "vxlan": {
+ "type": "boolean",
+ "default": true,
+ "description": "Extend this SVI over VXLAN.",
+ "title": "VxLAN"
},
- "title": "Unknown Unicast"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Storm Control"
- },
- "monitor_sessions": {
- "type": "array",
- "description": "Used to define switchports as source or destination for monitoring sessions.",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Session name.",
- "title": "Name"
+ "mtu": {
+ "type": "integer",
+ "description": "Interface MTU.",
+ "title": "MTU"
},
- "role": {
- "type": "string",
- "enum": [
- "source",
- "destination"
- ],
- "title": "Role"
+ "ospf": {
+ "type": "object",
+ "description": "OSPF interface configuration.",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "point_to_point": {
+ "type": "boolean",
+ "default": true,
+ "title": "Point To Point"
+ },
+ "area": {
+ "type": "string",
+ "description": "OSPF area ID.",
+ "default": "0",
+ "title": "Area"
+ },
+ "cost": {
+ "type": "integer",
+ "description": "OSPF link cost.",
+ "title": "Cost"
+ },
+ "authentication": {
+ "type": "string",
+ "enum": [
+ "simple",
+ "message-digest"
+ ],
+ "title": "Authentication"
+ },
+ "simple_auth_key": {
+ "type": "string",
+ "description": "Password used with simple authentication.",
+ "title": "Simple Auth Key"
+ },
+ "message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "default": "sha512",
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Type 7 encrypted key.",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Message Digest Keys"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "OSPF"
},
- "source_settings": {
+ "bgp": {
"type": "object",
"properties": {
- "direction": {
- "type": "string",
- "enum": [
- "rx",
- "tx",
- "both"
- ],
- "title": "Direction"
- },
- "access_group": {
+ "structured_config": {
"type": "object",
+ "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]\nThis configuration will not be applied to vlan aware bundles\n",
"properties": {
- "type": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "tenant": {
"type": "string",
- "enum": [
- "ip",
- "ipv6",
- "mac"
- ],
- "title": "Type"
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tenant"
},
- "name": {
- "description": "ACL name.",
+ "rd": {
+ "description": "Route distinguisher",
"type": "string",
- "title": "Name"
+ "title": "Rd"
},
- "priority": {
- "type": "integer",
- "title": "Priority"
+ "rd_evpn_domain": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "rd": {
+ "type": "string",
+ "description": "Route distinguisher",
+ "title": "Rd"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Rd EVPN Domain"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration",
+ "title": "EOS CLI"
+ },
+ "route_targets": {
+ "type": "object",
+ "properties": {
+ "both": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Both"
+ },
+ "import": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Import"
+ },
+ "export": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Export"
+ },
+ "import_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Import EVPN Domains"
+ },
+ "export_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Export EVPN Domains"
+ },
+ "import_export_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Import Export EVPN Domains"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Route Targets"
+ },
+ "redistribute_routes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Redistribute Routes"
+ },
+ "no_redistribute_routes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "No Redistribute Routes"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Access Group"
+ "title": "Structured Config"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n",
+ "title": "Raw EOS CLI"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Source Settings"
+ "title": "BGP"
},
- "session_settings": {
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
"type": "object",
- "description": "Session settings are defined per session name.\nDifferent session_settings for the same session name will be combined/merged.\n",
+ "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n",
"properties": {
- "encapsulation_gre_metadata_tx": {
+ "name": {
+ "type": "string",
+ "description": "VLAN interface name like \"Vlan123\"",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
"type": "boolean",
- "title": "Encapsulation Gre Metadata TX"
+ "title": "Shutdown"
},
- "header_remove_size": {
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "arp_aging_timeout": {
"type": "integer",
- "description": "Number of bytes to remove from header.",
- "title": "Header Remove Size"
+ "description": "In seconds",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "ARP Aging Timeout"
+ },
+ "arp_cache_dynamic_capacity": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "ARP Cache Dynamic Capacity"
+ },
+ "arp_gratuitous_accept": {
+ "type": "boolean",
+ "title": "ARP Gratuitous Accept"
+ },
+ "arp_monitor_mac_address": {
+ "type": "boolean",
+ "title": "ARP Monitor MAC Address"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "ip_directed_broadcast": {
+ "type": "boolean",
+ "title": "IP Directed Broadcast"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4_address/Mask",
+ "title": "IP Address"
+ },
+ "ip_address_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Secondaries"
+ },
+ "ip_virtual_router_addresses": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4 address or IPv4_address/Mask"
+ },
+ "title": "IP Virtual Router Addresses"
+ },
+ "ip_address_virtual": {
+ "type": "string",
+ "description": "IPv4_address/Mask",
+ "title": "IP Address Virtual"
+ },
+ "ip_address_virtual_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Virtual Secondaries"
+ },
+ "ip_igmp": {
+ "type": "boolean",
+ "title": "IP IGMP"
+ },
+ "ip_igmp_version": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 3,
+ "title": "IP IGMP Version"
+ },
+ "ip_helpers": {
+ "type": "array",
+ "description": "List of DHCP servers",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip_helper": {
+ "type": "string",
+ "description": "IP address or hostname of DHCP server",
+ "title": "IP Helper"
+ },
+ "source_interface": {
+ "type": "string",
+ "description": "Interface used as source for forwarded DHCP packets",
+ "title": "Source Interface"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF where DHCP server can be reached",
+ "title": "VRF"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ip_helper"
+ ]
+ },
+ "title": "IP Helpers"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
+ },
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Nat"
+ },
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
+ },
+ "ipv6_address": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_virtual": {
+ "type": "string",
+ "description": "IPv6_address/Mask\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
+ "deprecated": true,
+ "title": "IPv6 Address Virtual"
+ },
+ "ipv6_address_virtuals": {
+ "type": "array",
+ "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.",
+ "items": {
+ "type": "string",
+ "description": "IPv6_address/Mask"
+ },
+ "title": "IPv6 Address Virtuals"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_virtual_router_address": {
+ "type": "string",
+ "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.",
+ "deprecated": true,
+ "title": "IPv6 Virtual Router Address"
+ },
+ "ipv6_virtual_router_addresses": {
+ "type": "array",
+ "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.",
+ "items": {
+ "type": "string",
+ "description": "IPv6 address or IPv6_address/Mask"
+ },
+ "title": "IPv6 Virtual Router Addresses"
+ },
+ "ipv6_nd_ra_disabled": {
+ "type": "boolean",
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
+ "type": "boolean",
+ "title": "IPv6 ND Managed Config Flag"
+ },
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "In seconds <0-4294967295> or infinite",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "In seconds <0-4294967295> or infinite",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "ipv6_dhcp_relay_destinations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "DHCP server's IPv6 address",
+ "title": "Address"
+ },
+ "vrf": {
+ "type": "string",
+ "title": "VRF"
+ },
+ "local_interface": {
+ "type": "string",
+ "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address",
+ "title": "Local Interface"
+ },
+ "source_address": {
+ "type": "string",
+ "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface",
+ "title": "Source Address"
+ },
+ "link_address": {
+ "type": "string",
+ "description": "Override the default link address specified in the relayed DHCP packet",
+ "title": "Link Address"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "address"
+ ]
+ },
+ "title": "IPv6 DHCP Relay Destinations"
+ },
+ "access_group_in": {
+ "type": "string",
+ "description": "IPv4 access-list name",
+ "title": "Access Group In"
+ },
+ "access_group_out": {
+ "type": "string",
+ "description": "IPv4 access-list name",
+ "title": "Access Group Out"
+ },
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access-list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access-list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "IPv4 access-list name or IPv4 multicast group prefix with mask",
+ "title": "Boundary"
+ },
+ "out": {
+ "type": "boolean",
+ "title": "Out"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "boundary"
+ ]
+ },
+ "title": "Boundaries"
+ },
+ "source_route_export": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "administrative_distance": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "title": "Administrative Distance"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Route Export"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "IPv6 access-list name or IPv6 multicast group prefix with mask",
+ "title": "Boundary"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "boundary"
+ ]
+ },
+ "title": "Boundaries"
+ },
+ "source_route_export": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "administrative_distance": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "title": "Administrative Distance"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Route Export"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "ospf_network_point_to_point": {
+ "type": "boolean",
+ "title": "OSPF Network Point To Point"
+ },
+ "ospf_area": {
+ "type": "string",
+ "title": "OSPF Area"
+ },
+ "ospf_cost": {
+ "type": "integer",
+ "title": "OSPF Cost"
+ },
+ "ospf_authentication": {
+ "type": "string",
+ "enum": [
+ "none",
+ "simple",
+ "message-digest"
+ ],
+ "title": "OSPF Authentication"
+ },
+ "ospf_authentication_key": {
+ "type": "string",
+ "description": "Encrypted password used for simple authentication",
+ "title": "OSPF Authentication Key"
+ },
+ "ospf_message_digest_keys": {
+ "type": "array",
+ "description": "Keys used for message-digest authentication",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Encrypted password",
+ "title": "Key"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
},
- "access_group": {
+ "pim": {
"type": "object",
"properties": {
- "type": {
- "type": "string",
- "enum": [
- "ip",
- "ipv6",
- "mac"
- ],
- "title": "Type"
- },
- "name": {
- "description": "ACL name.",
- "type": "string",
- "title": "Name"
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ },
+ "local_interface": {
+ "type": "string",
+ "title": "Local Interface"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Access Group"
+ "title": "PIM"
},
- "rate_limit_per_ingress_chip": {
+ "isis_enable": {
"type": "string",
- "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
- "title": "Rate Limit Per Ingress Chip"
+ "description": "ISIS instance name",
+ "title": "ISIS Enable"
},
- "rate_limit_per_egress_chip": {
- "type": "string",
- "description": "Ratelimit and unit as string.\nExamples:\n \"100000 bps\"\n \"100 kbps\"\n \"10 mbps\"\n",
- "title": "Rate Limit Per Egress Chip"
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
},
- "sample": {
+ "isis_metric": {
"type": "integer",
- "title": "Sample"
+ "title": "ISIS Metric"
},
- "truncate": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "size": {
- "type": "integer",
- "description": "Size in bytes",
- "title": "Size"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Truncate"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Session Settings"
- }
- },
- "required": [
- "name"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Monitor Sessions"
- },
- "ethernet_segment": {
- "type": "object",
- "description": "Settings for all or single-active EVPN multihoming.",
- "properties": {
- "short_esi": {
- "type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\".\nDefine a manual short-esi (be careful using this on profiles) or set the value to \"auto\" to automatically generate the value.\nPlease see the notes under \"EVPN A/A ESI dual and single-attached endpoint scenarios\" before setting `short_esi: auto`.\n",
- "title": "Short Esi"
- },
- "redundancy": {
- "type": "string",
- "enum": [
- "all-active",
- "single-active"
- ],
- "description": "If omitted, Port-Channels use the EOS default of all-active.\nIf omitted, Ethernet interfaces are configured as single-active.\n",
- "title": "Redundancy"
- },
- "designated_forwarder_algorithm": {
- "type": "string",
- "enum": [
- "auto",
- "modulus",
- "preference"
- ],
- "description": "Configure DF algorithm and preferences.\n- auto: Use preference-based algorithm and assign preference based on position of device in the 'switches' list,\n e.g., assuming a list of three switches, this would assign a preference of 200 to the first switch, 100 to the 2nd, and 0 to the third.\n- preference: Set preference for each switch manually using designated_forwarder_preferences key.\n- modulus: Use the default modulus-based algorithm.\nIf omitted, Port-Channels use the EOS default of modulus.\nIf omitted, Ethernet interfaces default to the 'auto' mechanism detailed above.\n",
- "title": "Designated Forwarder Algorithm"
- },
- "designated_forwarder_preferences": {
- "type": "array",
- "description": "Manual preference as described above, required only for preference algorithm.",
- "items": {
- "type": "string"
- },
- "title": "Designated Forwarder Preferences"
- },
- "dont_preempt": {
- "type": "boolean",
- "description": "Disable preemption for single-active forwarding when auto/manual DF preference is configured.",
- "title": "Dont Preempt"
- }
- },
- "required": [
- "short_esi"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Ethernet Segment"
- },
- "port_channel": {
- "type": "object",
- "description": "Used for port-channel adapter.",
- "properties": {
- "mode": {
- "type": "string",
- "description": "Port-Channel Mode.",
- "enum": [
- "active",
- "passive",
- "on"
- ],
- "title": "Mode"
- },
- "channel_id": {
- "type": "integer",
- "description": "Port-Channel ID.\nIf no channel_id is specified, an id is generated from the first switch port in the port channel.\n",
- "title": "Channel ID"
- },
- "description": {
- "type": "string",
- "description": "By default the description is built leveraging `` name or `adapter.description` when defined.\nWhen this key is defined, it will append its content to the physical port description.\n",
- "title": "Description"
- },
- "enabled": {
- "type": "boolean",
- "default": true,
- "description": "Port-Channel administrative state.\nSetting to false will set port to 'shutdown' in intended configuration.\n",
- "title": "Enabled"
- },
- "short_esi": {
- "type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\".\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ethernet_segment.short_esi instead.",
- "deprecated": true,
- "title": "Short Esi"
- },
- "lacp_fallback": {
- "type": "object",
- "description": "LACP fallback configuration.",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "static"
- ],
- "description": "Currently only static mode is supported.",
- "title": "Mode"
- },
- "timeout": {
- "type": "integer",
- "description": "Timeout in seconds. EOS default is 90 seconds.",
- "title": "Timeout"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "LACP Fallback"
- },
- "lacp_timer": {
- "type": "object",
- "description": "LACP timer configuration. Applies only when Port-channel mode is not \"on\".",
- "properties": {
- "mode": {
- "type": "string",
- "enum": [
- "normal",
- "fast"
- ],
- "description": "LACP mode for interface members.",
- "title": "Mode"
- },
- "multiplier": {
- "type": "integer",
- "description": "Number of LACP BPDUs lost before deeming the peer down. EOS default is 3.",
- "title": "Multiplier"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "LACP Timer"
- },
- "subinterfaces": {
- "type": "array",
- "description": "Port-Channel L2 Subinterfaces\nSubinterfaces are only supported on routed port-channels, which means they cannot be configured on MLAG port-channels.\nSetting short_esi: auto generates the short_esi automatically using a hash of configuration elements.\nPlease see the notes under \"EVPN A/A ESI dual-attached endpoint scenario\" before setting short_esi: auto.\n",
- "items": {
- "type": "object",
- "properties": {
- "number": {
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "mtu": {
"type": "integer",
- "description": "Subinterface number",
- "title": "Number"
+ "title": "MTU"
},
- "short_esi": {
- "type": "string",
- "description": "In format xxxx:xxxx:xxxx or \"auto\"\nRequired for multihomed port-channels with subinterfaces\n",
- "title": "Short Esi"
+ "no_autostate": {
+ "type": "boolean",
+ "title": "No Autostate"
+ },
+ "vrrp_ids": {
+ "type": "array",
+ "description": "Improved \"vrrp\" data model to support multiple VRRP IDs",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "VRID",
+ "title": "ID"
+ },
+ "priority_level": {
+ "type": "integer",
+ "description": "Instance priority",
+ "title": "Priority Level"
+ },
+ "advertisement": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "description": "Interval in seconds",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Advertisement"
+ },
+ "preempt": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "delay": {
+ "type": "object",
+ "properties": {
+ "minimum": {
+ "type": "integer",
+ "description": "Minimum preempt delay in seconds",
+ "title": "Minimum"
+ },
+ "reload": {
+ "type": "integer",
+ "description": "Reload preempt delay in seconds",
+ "title": "Reload"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Delay"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Preempt"
+ },
+ "timers": {
+ "type": "object",
+ "properties": {
+ "delay": {
+ "type": "object",
+ "properties": {
+ "reload": {
+ "type": "integer",
+ "description": "Delay after reload in seconds.",
+ "title": "Reload"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timers"
+ },
+ "tracked_object": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Tracked object name",
+ "title": "Name"
+ },
+ "decrement": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 254,
+ "description": "Decrement VRRP priority by 1-254",
+ "title": "Decrement"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Tracked Object"
+ },
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "Virtual IPv4 address",
+ "title": "Address"
+ },
+ "version": {
+ "type": "integer",
+ "enum": [
+ 2,
+ 3
+ ],
+ "title": "Version"
+ }
+ },
+ "required": [
+ "address"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "Virtual IPv6 address",
+ "title": "Address"
+ }
+ },
+ "required": [
+ "address"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "VRRP IDs"
},
- "vlan_id": {
- "type": "integer",
- "minimum": 1,
- "maximum": 4094,
- "description": "VLAN ID to bridge.\nDefault is subinterface number.\n",
- "title": "VLAN ID"
+ "vrrp": {
+ "type": "object",
+ "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.",
+ "deprecated": true,
+ "properties": {
+ "virtual_router": {
+ "type": "string",
+ "description": "Virtual Router ID",
+ "title": "Virtual Router"
+ },
+ "priority": {
+ "type": "integer",
+ "description": "Instance priority",
+ "title": "Priority"
+ },
+ "advertisement_interval": {
+ "type": "integer",
+ "title": "Advertisement Interval"
+ },
+ "preempt_delay_minimum": {
+ "type": "integer",
+ "title": "Preempt Delay Minimum"
+ },
+ "ipv4": {
+ "type": "string",
+ "description": "Virtual IPv4 address",
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "string",
+ "description": "Virtual IPv6 address",
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "VRRP"
},
- "encapsulation_vlan": {
+ "ip_attached_host_route_export": {
"type": "object",
- "description": "Client VLAN ID encapsulation.\nDefault is subinterface number.\n",
"properties": {
- "client_dot1q": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "distance": {
"type": "integer",
"minimum": 1,
- "maximum": 4094,
- "title": "Client Dot1Q"
+ "maximum": 255,
+ "title": "Distance"
}
},
+ "required": [
+ "enabled"
+ ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Encapsulation VLAN"
+ "title": "IP Attached Host Route Export"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Minimum RX hold time in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Name of policy-map used for policy based routing",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "pvlan_mapping": {
+ "type": "string",
+ "description": "List of VLANs as string",
+ "title": "PVLAN Mapping"
+ },
+ "tenant": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tenant"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tags"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration",
+ "title": "EOS CLI"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
- },
- "title": "Subinterfaces"
+ },
+ "title": "Structured Config"
+ }
},
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the port-channel interface in the final EOS configuration.",
- "title": "Raw EOS CLI"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under port_channel_interfaces. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "required": [
+ "node"
+ ]
},
- "title": "Port Channel"
- },
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the ethernet interface in the final EOS configuration.",
- "title": "Raw EOS CLI"
+ "title": "Nodes"
},
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under ethernet_interfaces. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "required": [
- "profile"
- ]
- },
- "title": "Port Profiles"
- },
- "ptp": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "profile": {
- "type": "string",
- "enum": [
- "aes67",
- "smpte2059-2",
- "aes67-r16-2016"
- ],
- "default": "aes67-r16-2016",
- "title": "Profile"
- },
- "domain": {
- "type": "integer",
- "minimum": 0,
- "maximum": 255,
- "title": "Domain"
- },
- "auto_clock_identity": {
- "type": "boolean",
- "default": true,
- "title": "Auto Clock Identity"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "PTP"
- },
- "ptp_profiles": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "profile": {
+ "name": {
"type": "string",
- "description": "PTP profile.",
- "title": "Profile"
+ "description": "VLAN name",
+ "title": "Name"
},
- "announce": {
- "type": "object",
- "description": "PTP announce interval.",
- "properties": {
- "interval": {
- "type": "integer",
- "minimum": -7,
- "maximum": 4,
- "title": "Interval"
- },
- "timeout": {
- "type": "integer",
- "minimum": 2,
- "maximum": 255,
- "title": "Timeout"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Announce"
+ "enabled": {
+ "type": "boolean",
+ "description": "Enable or disable interface",
+ "title": "Enabled"
},
- "delay_req": {
- "type": "integer",
- "minimum": -7,
- "maximum": 8,
- "title": "Delay Req"
+ "description": {
+ "type": "string",
+ "description": "SVI description. By default set to VLAN name.\n",
+ "title": "Description"
},
- "sync_message": {
- "type": "object",
- "description": "PTP sync message interval.",
- "properties": {
- "interval": {
- "type": "integer",
- "minimum": -7,
- "maximum": 3,
- "title": "Interval"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Sync Message"
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.",
+ "title": "IP Address"
},
- "transport": {
+ "ipv6_address": {
"type": "string",
- "enum": [
- "ipv4"
- ],
- "title": "Transport"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "default": [
- {
- "announce": {
- "interval": 0,
- "timeout": 3
+ "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.",
+ "title": "IPv6 Address"
},
- "delay_req": -3,
- "profile": "aes67-r16-2016",
- "sync_message": {
- "interval": -3
+ "ipv6_enable": {
+ "type": "boolean",
+ "description": "Explicitly enable/disable link-local IPv6 addressing.",
+ "title": "IPv6 Enable"
},
- "transport": "ipv4"
- },
- {
- "announce": {
- "interval": -2,
- "timeout": 3
+ "ip_address_virtual": {
+ "type": "string",
+ "description": "IPv4_address/Mask\nIPv4 VXLAN Anycast IP address\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n",
+ "title": "IP Address Virtual"
},
- "delay_req": -4,
- "profile": "smpte2059-2",
- "sync_message": {
- "interval": -4
+ "ipv6_address_virtual": {
+ "type": "string",
+ "description": "IPv6_address/Mask\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional)\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
+ "deprecated": true,
+ "title": "IPv6 Address Virtual"
},
- "transport": "ipv4"
- },
- {
- "announce": {
- "interval": 2,
- "timeout": 3
+ "ipv6_address_virtuals": {
+ "type": "array",
+ "description": "IPv6 VXLAN Anycast IP addresses\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n",
+ "items": {
+ "type": "string",
+ "description": "IPv6_address/Mask"
+ },
+ "title": "IPv6 Address Virtuals"
},
- "delay_req": 0,
- "profile": "aes67",
- "sync_message": {
- "interval": 0
+ "ip_address_virtual_secondaries": {
+ "type": "array",
+ "description": "Secondary IPv4 VXLAN Anycast IP addresses",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Virtual Secondaries"
},
- "transport": "ipv4"
- }
- ],
- "title": "PTP Profiles"
- },
- "queue_monitor_length": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "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.",
- "title": "Notifying"
- },
- "default_thresholds": {
- "type": "object",
- "properties": {
- "high": {
- "type": "integer",
- "description": "Default high threshold for Ethernet Interfaces.\n",
- "title": "High"
+ "ip_virtual_router_addresses": {
+ "type": "array",
+ "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask or IPv4_address\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n"
},
- "low": {
- "type": "integer",
- "description": "Default low threshold for Ethernet Interfaces.\nLow threshold support is platform dependent.\n",
- "title": "Low"
- }
+ "title": "IP Virtual Router Addresses"
},
- "required": [
- "high"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ipv6_virtual_router_addresses": {
+ "type": "array",
+ "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n",
+ "items": {
+ "type": "string",
+ "description": "IPv6_address"
+ },
+ "title": "IPv6 Virtual Router Addresses"
},
- "title": "Default Thresholds"
- },
- "log": {
- "type": "integer",
- "description": "Logging interval in seconds",
- "title": "Log"
- },
- "cpu": {
- "type": "object",
- "properties": {
- "thresholds": {
+ "ip_helpers": {
+ "type": "array",
+ "description": "IP helper for DHCP relay",
+ "items": {
"type": "object",
"properties": {
- "high": {
- "type": "integer",
- "title": "High"
+ "ip_helper": {
+ "type": "string",
+ "description": "IPv4 DHCP server IP",
+ "title": "IP Helper"
},
- "low": {
- "type": "integer",
- "title": "Low"
+ "source_interface": {
+ "type": "string",
+ "description": "Interface name to originate DHCP relay packets to DHCP server.",
+ "title": "Source Interface"
+ },
+ "source_vrf": {
+ "type": "string",
+ "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.",
+ "title": "Source VRF"
}
},
- "required": [
- "high"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "Thresholds"
- }
+ "required": [
+ "ip_helper"
+ ]
+ },
+ "title": "IP Helpers"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "vni_override": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 16777215,
+ "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n",
+ "title": "Vni Override"
},
- "title": "CPU"
- }
- },
- "required": [
- "enabled"
- ],
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Queue Monitor Length"
- },
- "redundancy": {
- "type": "object",
- "description": "Redundancy for chassis platforms with dual supervisors | Optional.",
- "properties": {
- "protocol": {
- "type": "string",
- "enum": [
- "sso",
- "rpr"
- ],
- "title": "Protocol"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Redundancy"
- },
- "serial_number": {
- "description": "Serial Number of the device.\nUsed for documentation purpose in the fabric documentation as can also be used by the 'eos_config_deploy_cvp' role.\n\"serial_number\" can also be set directly under node type settings.\nIf both are set, the value under node type settings takes precedence.\n",
- "type": "string",
- "title": "Serial Number"
- },
- "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.",
- "title": "Shutdown Interfaces Towards Undeployed Peers"
- },
- "snmp_settings": {
- "type": "object",
- "description": "Set SNMP settings (optional).",
- "properties": {
- "contact": {
- "type": "string",
- "description": "SNMP contact.",
- "title": "Contact"
- },
- "location": {
- "type": "boolean",
- "default": false,
- "description": "Set SNMP location. Formatted as \" \".",
- "title": "Location"
- },
- "compute_local_engineid": {
- "type": "boolean",
- "default": false,
- "description": "Generate a local engineId for SNMP using the 'compute_local_engineid_source' method.\n",
- "title": "Compute Local Engineid"
- },
- "compute_local_engineid_source": {
- "type": "string",
- "default": "hostname_and_ip",
- "description": "`compute_local_engineid_source` supports:\n- `hostname_and_ip` generate a local engineId for SNMP by hashing via SHA1\n the string generated via the concatenation of the hostname plus the management IP.\n {{ inventory_hostname }} + {{ switch.mgmt_ip }}.\n- `system_mac` generate the switch default engine id for AVD usage.\n To use this, `system_mac_address` MUST be set for the device.\n The formula is f5717f + system_mac_address + 00.\n",
- "enum": [
- "hostname_and_ip",
- "system_mac"
- ],
- "title": "Compute Local Engineid Source"
- },
- "compute_v3_user_localized_key": {
- "type": "boolean",
- "default": false,
- "description": "Requires compute_local_engineid to be `true`.\nIf enabled, the SNMPv3 passphrases for auth and priv are transformed using RFC 2574, matching the value they would take in EOS CLI.\nThe algorithm requires a local engineId, which is unknown to AVD, hence the necessity to generate one beforehand.\n",
- "title": "Compute V3 User Localized Key"
- },
- "users": {
- "type": "array",
- "items": {
+ "rt_override": {
+ "type": "string",
+ "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon seperator which will override the full RT.\n",
+ "title": "Rt Override"
+ },
+ "rd_override": {
+ "type": "string",
+ "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
+ "title": "Rd Override"
+ },
+ "tags": {
+ "type": "array",
+ "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
+ "default": [
+ "all"
+ ],
+ "items": {
+ "type": "string",
+ "description": "Tag value."
+ },
+ "title": "Tags"
+ },
+ "trunk_groups": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n"
+ },
+ "title": "Trunk Groups"
+ },
+ "evpn_l2_multicast": {
"type": "object",
+ "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\n",
"properties": {
- "name": {
- "type": "string",
- "description": "Username",
- "title": "Name"
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN L2 Multicast"
+ },
+ "evpn_l3_multicast": {
+ "type": "object",
+ "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\n",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "EVPN L3 Multicast"
+ },
+ "igmp_snooping_enabled": {
+ "type": "boolean",
+ "description": "Enable IGMP Snooping (Enabled by default on EOS).",
+ "title": "IGMP Snooping Enabled"
+ },
+ "igmp_snooping_querier": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Will be enabled automatically if evpn_l2_multicast is enabled.",
+ "title": "Enabled"
},
- "group": {
+ "source_address": {
"type": "string",
- "description": "Configuration of the SNMP User Groups are currently only possible using `structured_config`.\n",
- "title": "Group"
+ "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n",
+ "title": "Source Address"
},
"version": {
- "type": "string",
+ "type": "integer",
+ "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).",
"enum": [
- "v1",
- "v2c",
- "v3"
+ 1,
+ 2,
+ 3
],
"title": "Version"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IGMP Snooping Querier"
+ },
+ "vxlan": {
+ "type": "boolean",
+ "default": true,
+ "description": "Extend this SVI over VXLAN.",
+ "title": "VxLAN"
+ },
+ "mtu": {
+ "type": "integer",
+ "description": "Interface MTU.",
+ "title": "MTU"
+ },
+ "ospf": {
+ "type": "object",
+ "description": "OSPF interface configuration.",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
},
- "auth": {
- "type": "string",
- "enum": [
- "md5",
- "sha",
- "sha256",
- "sha384",
- "sha512"
- ],
- "title": "Auth"
+ "point_to_point": {
+ "type": "boolean",
+ "default": true,
+ "title": "Point To Point"
},
- "auth_passphrase": {
+ "area": {
"type": "string",
- "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'auth' to be set.",
- "title": "Auth Passphrase"
+ "description": "OSPF area ID.",
+ "default": "0",
+ "title": "Area"
},
- "priv": {
+ "cost": {
+ "type": "integer",
+ "description": "OSPF link cost.",
+ "title": "Cost"
+ },
+ "authentication": {
"type": "string",
"enum": [
- "des",
- "aes",
- "aes192",
- "aes256"
+ "simple",
+ "message-digest"
],
- "title": "Priv"
+ "title": "Authentication"
},
- "priv_passphrase": {
+ "simple_auth_key": {
"type": "string",
- "description": "Cleartext passphrase so the recommendation is to use vault. Requires 'priv' to be set.",
- "title": "Priv Passphrase"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Users"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "Snmp Settings"
- },
- "svi_profiles": {
- "type": "array",
- "description": "Profiles to share common settings for SVIs under `.[].vrfs.svis`.\nKeys are the same used under SVIs. Keys defined under SVIs take precedence.\nNote: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:\n1. svi.nodes[inventory_hostname].structured_config\n2. svi_profile.nodes[inventory_hostname].structured_config\n3. svi_parent_profile.nodes[inventory_hostname].structured_config\n4. svi.structured_config\n5. svi_profile.structured_config\n6. svi_parent_profile.structured_config\n",
- "items": {
- "type": "object",
- "properties": {
- "profile": {
- "type": "string",
- "description": "Profile name",
- "title": "Profile"
- },
- "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).",
- "title": "Parent Profile"
- },
- "nodes": {
- "type": "array",
- "description": "Define node specific configuration, such as unique IP addresses.\nAny keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.\n",
- "items": {
- "type": "object",
- "properties": {
- "node": {
- "type": "string",
- "description": "l3_leaf inventory hostname",
- "title": "Node"
- },
- "name": {
- "type": "string",
- "description": "VLAN name",
- "title": "Name"
- },
- "enabled": {
- "type": "boolean",
- "description": "Enable or disable interface",
- "title": "Enabled"
- },
- "description": {
- "type": "string",
- "description": "SVI description. By default set to VLAN name.\n",
- "title": "Description"
- },
- "ip_address": {
- "type": "string",
- "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.",
- "title": "IP Address"
- },
- "ipv6_address": {
- "type": "string",
- "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.",
- "title": "IPv6 Address"
- },
- "ipv6_enable": {
- "type": "boolean",
- "description": "Explicitly enable/disable link-local IPv6 addressing.",
- "title": "IPv6 Enable"
- },
- "ip_address_virtual": {
- "type": "string",
- "description": "IPv4_address/Mask\nIPv4 VXLAN Anycast IP address\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n",
- "title": "IP Address Virtual"
- },
- "ipv6_address_virtual": {
- "type": "string",
- "description": "IPv6_address/Mask\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional)\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
- "deprecated": true,
- "title": "IPv6 Address Virtual"
- },
- "ipv6_address_virtuals": {
- "type": "array",
- "description": "IPv6 VXLAN Anycast IP addresses\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n",
- "items": {
- "type": "string",
- "description": "IPv6_address/Mask"
- },
- "title": "IPv6 Address Virtuals"
- },
- "ip_address_virtual_secondaries": {
- "type": "array",
- "description": "Secondary IPv4 VXLAN Anycast IP addresses",
- "items": {
- "type": "string",
- "description": "IPv4_address/Mask"
+ "description": "Password used with simple authentication.",
+ "title": "Simple Auth Key"
+ },
+ "message_digest_keys": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "md5",
+ "sha1",
+ "sha256",
+ "sha384",
+ "sha512"
+ ],
+ "default": "sha512",
+ "title": "Hash Algorithm"
+ },
+ "key": {
+ "type": "string",
+ "description": "Type 7 encrypted key.",
+ "title": "Key"
+ }
},
- "title": "IP Address Virtual Secondaries"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
},
- "ip_virtual_router_addresses": {
- "type": "array",
- "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n",
- "items": {
+ "title": "Message Digest Keys"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "OSPF"
+ },
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "structured_config": {
+ "type": "object",
+ "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]\nThis configuration will not be applied to vlan aware bundles\n",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "title": "ID"
+ },
+ "tenant": {
"type": "string",
- "description": "IPv4_address/Mask or IPv4_address\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n"
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tenant"
},
- "title": "IP Virtual Router Addresses"
- },
- "ipv6_virtual_router_addresses": {
- "type": "array",
- "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n",
- "items": {
+ "rd": {
+ "description": "Route distinguisher",
"type": "string",
- "description": "IPv6_address"
+ "title": "Rd"
},
- "title": "IPv6 Virtual Router Addresses"
- },
- "ip_helpers": {
- "type": "array",
- "description": "IP helper for DHCP relay",
- "items": {
+ "rd_evpn_domain": {
"type": "object",
"properties": {
- "ip_helper": {
- "type": "string",
- "description": "IPv4 DHCP server IP",
- "title": "IP Helper"
- },
- "source_interface": {
+ "domain": {
"type": "string",
- "description": "Interface name to originate DHCP relay packets to DHCP server.",
- "title": "Source Interface"
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
},
- "source_vrf": {
+ "rd": {
"type": "string",
- "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.",
- "title": "Source VRF"
+ "description": "Route distinguisher",
+ "title": "Rd"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "required": [
- "ip_helper"
- ]
- },
- "title": "IP Helpers"
- },
- "vni_override": {
- "type": "integer",
- "minimum": 1,
- "maximum": 16777215,
- "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n",
- "title": "Vni Override"
- },
- "rt_override": {
- "type": "string",
- "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon seperator which will override the full RT.\n",
- "title": "Rt Override"
- },
- "rd_override": {
- "type": "string",
- "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
- "title": "Rd Override"
- },
- "tags": {
- "type": "array",
- "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
- "default": [
- "all"
- ],
- "items": {
- "type": "string",
- "description": "Tag value."
+ "title": "Rd EVPN Domain"
},
- "title": "Tags"
- },
- "trunk_groups": {
- "type": "array",
- "items": {
+ "eos_cli": {
"type": "string",
- "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n"
- },
- "title": "Trunk Groups"
- },
- "evpn_l2_multicast": {
- "type": "object",
- "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EVPN L2 Multicast"
- },
- "evpn_l3_multicast": {
- "type": "object",
- "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "description": "Multiline EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration",
+ "title": "EOS CLI"
},
- "title": "EVPN L3 Multicast"
- },
- "igmp_snooping_enabled": {
- "type": "boolean",
- "description": "Enable IGMP Snooping (Enabled by default on EOS).",
- "title": "IGMP Snooping Enabled"
- },
- "igmp_snooping_querier": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Will be enabled automatically if evpn_l2_multicast is enabled.",
- "title": "Enabled"
+ "route_targets": {
+ "type": "object",
+ "properties": {
+ "both": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Both"
+ },
+ "import": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Import"
+ },
+ "export": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Export"
+ },
+ "import_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Import EVPN Domains"
+ },
+ "export_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Export EVPN Domains"
+ },
+ "import_export_evpn_domains": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "enum": [
+ "remote",
+ "all"
+ ],
+ "title": "Domain"
+ },
+ "route_target": {
+ "type": "string",
+ "title": "Route Target"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Import Export EVPN Domains"
+ }
},
- "source_address": {
- "type": "string",
- "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n",
- "title": "Source Address"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "version": {
- "type": "integer",
- "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).",
- "enum": [
- 1,
- 2,
- 3
- ],
- "title": "Version"
- }
+ "title": "Route Targets"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "redistribute_routes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "Redistribute Routes"
},
- "title": "IGMP Snooping Querier"
+ "no_redistribute_routes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "title": "No Redistribute Routes"
+ }
},
- "vxlan": {
- "type": "boolean",
- "default": true,
- "description": "Extend this SVI over VXLAN.",
- "title": "VxLAN"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "mtu": {
- "type": "integer",
- "description": "Interface MTU.",
- "title": "MTU"
+ "title": "Structured Config"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n",
+ "title": "Raw EOS CLI"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
+ "raw_eos_cli": {
+ "type": "string",
+ "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n",
+ "title": "Raw EOS CLI"
+ },
+ "structured_config": {
+ "type": "object",
+ "description": "Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.\n",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "VLAN interface name like \"Vlan123\"",
+ "title": "Name"
+ },
+ "description": {
+ "type": "string",
+ "title": "Description"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ },
+ "vrf": {
+ "type": "string",
+ "description": "VRF name",
+ "title": "VRF"
+ },
+ "arp_aging_timeout": {
+ "type": "integer",
+ "description": "In seconds",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "ARP Aging Timeout"
+ },
+ "arp_cache_dynamic_capacity": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "ARP Cache Dynamic Capacity"
+ },
+ "arp_gratuitous_accept": {
+ "type": "boolean",
+ "title": "ARP Gratuitous Accept"
+ },
+ "arp_monitor_mac_address": {
+ "type": "boolean",
+ "title": "ARP Monitor MAC Address"
+ },
+ "ip_proxy_arp": {
+ "type": "boolean",
+ "title": "IP Proxy ARP"
+ },
+ "ip_directed_broadcast": {
+ "type": "boolean",
+ "title": "IP Directed Broadcast"
+ },
+ "ip_address": {
+ "type": "string",
+ "description": "IPv4_address/Mask",
+ "title": "IP Address"
+ },
+ "ip_address_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Secondaries"
+ },
+ "ip_virtual_router_addresses": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4 address or IPv4_address/Mask"
},
- "ospf": {
+ "title": "IP Virtual Router Addresses"
+ },
+ "ip_address_virtual": {
+ "type": "string",
+ "description": "IPv4_address/Mask",
+ "title": "IP Address Virtual"
+ },
+ "ip_address_virtual_secondaries": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "IPv4_address/Mask"
+ },
+ "title": "IP Address Virtual Secondaries"
+ },
+ "ip_igmp": {
+ "type": "boolean",
+ "title": "IP IGMP"
+ },
+ "ip_igmp_version": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 3,
+ "title": "IP IGMP Version"
+ },
+ "ip_helpers": {
+ "type": "array",
+ "description": "List of DHCP servers",
+ "items": {
"type": "object",
- "description": "OSPF interface configuration.",
"properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- },
- "point_to_point": {
- "type": "boolean",
- "default": true,
- "title": "Point To Point"
- },
- "area": {
+ "ip_helper": {
"type": "string",
- "description": "OSPF area ID.",
- "default": "0",
- "title": "Area"
- },
- "cost": {
- "type": "integer",
- "description": "OSPF link cost.",
- "title": "Cost"
+ "description": "IP address or hostname of DHCP server",
+ "title": "IP Helper"
},
- "authentication": {
+ "source_interface": {
"type": "string",
- "enum": [
- "simple",
- "message-digest"
- ],
- "title": "Authentication"
+ "description": "Interface used as source for forwarded DHCP packets",
+ "title": "Source Interface"
},
- "simple_auth_key": {
+ "vrf": {
"type": "string",
- "description": "Password used with simple authentication.",
- "title": "Simple Auth Key"
- },
- "message_digest_keys": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer",
- "title": "ID"
- },
- "hash_algorithm": {
- "type": "string",
- "enum": [
- "md5",
- "sha1",
- "sha256",
- "sha384",
- "sha512"
- ],
- "default": "sha512",
- "title": "Hash Algorithm"
- },
- "key": {
- "type": "string",
- "description": "Type 7 encrypted key.",
- "title": "Key"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- }
- },
- "title": "Message Digest Keys"
+ "description": "VRF where DHCP server can be reached",
+ "title": "VRF"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "OSPF"
+ "required": [
+ "ip_helper"
+ ]
},
- "bgp": {
- "type": "object",
- "properties": {
- "structured_config": {
- "type": "object",
- "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.\nThis configuration will not be applied to vlan aware bundles\n",
- "title": "Structured Config"
+ "title": "IP Helpers"
+ },
+ "ip_nat": {
+ "type": "object",
+ "properties": {
+ "destination": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "pool_name": {
+ "type": "string",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "pool_name",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
},
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n",
- "title": "Raw EOS CLI"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Destination"
},
- "title": "BGP"
+ "source": {
+ "type": "object",
+ "properties": {
+ "dynamic": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "nat_type": {
+ "type": "string",
+ "enum": [
+ "overload",
+ "pool",
+ "pool-address-only",
+ "pool-full-cone"
+ ],
+ "title": "Nat Type"
+ },
+ "pool_name": {
+ "type": "string",
+ "description": "required if 'nat_type' is pool, pool-address-only or pool-full-cone\nignored if 'nat_type' is overload\n",
+ "title": "Pool Name"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ }
+ },
+ "required": [
+ "nat_type",
+ "access_list"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Dynamic"
+ },
+ "static": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "access_list": {
+ "type": "string",
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Access List"
+ },
+ "comment": {
+ "type": "string",
+ "title": "Comment"
+ },
+ "direction": {
+ "type": "string",
+ "enum": [
+ "egress",
+ "ingress"
+ ],
+ "description": "Egress or ingress can be the default. This depends on source/destination, EOS version, and hardware platform.\nEOS might remove this keyword in the configuration. So, check the configuration on targeted HW/SW.\n",
+ "title": "Direction"
+ },
+ "group": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "'access_list' and 'group' are mutual exclusive",
+ "title": "Group"
+ },
+ "original_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Original IP"
+ },
+ "original_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "title": "Original Port"
+ },
+ "priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 4294967295,
+ "title": "Priority"
+ },
+ "protocol": {
+ "type": "string",
+ "enum": [
+ "udp",
+ "tcp"
+ ],
+ "title": "Protocol"
+ },
+ "translated_ip": {
+ "type": "string",
+ "description": "IPv4 address",
+ "title": "Translated IP"
+ },
+ "translated_port": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 65535,
+ "description": "requires 'original_port'",
+ "title": "Translated Port"
+ }
+ },
+ "required": [
+ "translated_ip",
+ "original_ip"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ }
+ },
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source"
+ }
},
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n",
- "title": "Raw EOS CLI"
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
},
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under vlan_interfaces. for eos_cli_config_gen.",
- "title": "Structured Config"
- }
+ "title": "IP Nat"
},
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "ipv6_enable": {
+ "type": "boolean",
+ "title": "IPv6 Enable"
},
- "required": [
- "node"
- ]
- },
- "title": "Nodes"
- },
- "name": {
- "type": "string",
- "description": "VLAN name",
- "title": "Name"
- },
- "enabled": {
- "type": "boolean",
- "description": "Enable or disable interface",
- "title": "Enabled"
- },
- "description": {
- "type": "string",
- "description": "SVI description. By default set to VLAN name.\n",
- "title": "Description"
- },
- "ip_address": {
- "type": "string",
- "description": "IPv4_address/Mask. Usually set under \"nodes\" to have unique IPv4 addresses per node.",
- "title": "IP Address"
- },
- "ipv6_address": {
- "type": "string",
- "description": "IPv6_address/Mask. Usually set under \"nodes\" to have unique IPv6 addresses per node.",
- "title": "IPv6 Address"
- },
- "ipv6_enable": {
- "type": "boolean",
- "description": "Explicitly enable/disable link-local IPv6 addressing.",
- "title": "IPv6 Enable"
- },
- "ip_address_virtual": {
- "type": "string",
- "description": "IPv4_address/Mask\nIPv4 VXLAN Anycast IP address\nConserves IP addresses in VXLAN deployments as it doesn't require unique IP addresses on each node.\n",
- "title": "IP Address Virtual"
- },
- "ipv6_address_virtual": {
- "type": "string",
- "description": "IPv6_address/Mask\nipv6 address virtuals to configure VXLAN Anycast IP address (Optional)\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
- "deprecated": true,
- "title": "IPv6 Address Virtual"
- },
- "ipv6_address_virtuals": {
- "type": "array",
- "description": "IPv6 VXLAN Anycast IP addresses\nConserves IPv6 addresses in VXLAN deployments as it doesn't require unique IPv6 addresses on each node.\n",
- "items": {
- "type": "string",
- "description": "IPv6_address/Mask"
- },
- "title": "IPv6 Address Virtuals"
- },
- "ip_address_virtual_secondaries": {
- "type": "array",
- "description": "Secondary IPv4 VXLAN Anycast IP addresses",
- "items": {
- "type": "string",
- "description": "IPv4_address/Mask"
- },
- "title": "IP Address Virtual Secondaries"
- },
- "ip_virtual_router_addresses": {
- "type": "array",
- "description": "IPv4 VARP addresses.\nRequires an IP address to be configured on the SVI.\nIf ip_address_virtual is also set, ip_virtual_router_addresses will take precedence\n_if_ there is an ip_address configured for the node.\n",
- "items": {
- "type": "string",
- "description": "IPv4_address/Mask or IPv4_address\nIPv4_address/Mask will also configure a static route to the SVI per best practice.\n"
- },
- "title": "IP Virtual Router Addresses"
- },
- "ipv6_virtual_router_addresses": {
- "type": "array",
- "description": "IPv6 VARP addresses.\nRequires an IPv6 address to be configured on the SVI.\nIf ipv6_address_virtuals is also set, ipv6_virtual_router_addresses will take precedence\n_if_ there is an ipv6_address configured for the node.\n",
- "items": {
- "type": "string",
- "description": "IPv6_address"
- },
- "title": "IPv6 Virtual Router Addresses"
- },
- "ip_helpers": {
- "type": "array",
- "description": "IP helper for DHCP relay",
- "items": {
- "type": "object",
- "properties": {
- "ip_helper": {
+ "ipv6_address": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Address"
+ },
+ "ipv6_address_virtual": {
+ "type": "string",
+ "description": "IPv6_address/Mask\nIf both \"ipv6_address_virtual\" and \"ipv6_address_virtuals\" are set, all addresses will be configured\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_address_virtuals instead.",
+ "deprecated": true,
+ "title": "IPv6 Address Virtual"
+ },
+ "ipv6_address_virtuals": {
+ "type": "array",
+ "description": "The new \"ipv6_address_virtuals\" key support multiple virtual ipv6 addresses.",
+ "items": {
"type": "string",
- "description": "IPv4 DHCP server IP",
- "title": "IP Helper"
+ "description": "IPv6_address/Mask"
},
- "source_interface": {
+ "title": "IPv6 Address Virtuals"
+ },
+ "ipv6_address_link_local": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Address Link Local"
+ },
+ "ipv6_virtual_router_address": {
+ "type": "string",
+ "description": "\"ipv6_virtual_router_address\" should not be mixed with\nthe new \"ipv6_virtual_router_addresses\" key below to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use ipv6_virtual_router_addresses instead.",
+ "deprecated": true,
+ "title": "IPv6 Virtual Router Address"
+ },
+ "ipv6_virtual_router_addresses": {
+ "type": "array",
+ "description": "Improved \"VARPv6\" data model to support multiple VARPv6 addresses.",
+ "items": {
"type": "string",
- "description": "Interface name to originate DHCP relay packets to DHCP server.",
- "title": "Source Interface"
+ "description": "IPv6 address or IPv6_address/Mask"
},
- "source_vrf": {
- "type": "string",
- "description": "VRF to originate DHCP relay packets to DHCP server. If not set, EOS uses the VRF on the SVI.",
- "title": "Source VRF"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
+ "title": "IPv6 Virtual Router Addresses"
},
- "required": [
- "ip_helper"
- ]
- },
- "title": "IP Helpers"
- },
- "vni_override": {
- "type": "integer",
- "minimum": 1,
- "maximum": 16777215,
- "description": "By default the VNI will be derived from \"mac_vrf_vni_base\".\nThe vni_override allows us to override this value and statically define it (optional).\n",
- "title": "Vni Override"
- },
- "rt_override": {
- "type": "string",
- "description": "By default the MAC VRF RT will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrt_override will default to vni_override if set.\n\nrt_override supports two formats:\n - A single number which will be used in the RT fields instead of mac_vrf_id/mac_vrf_vni (see 'overlay_rt_type' for details).\n - A full RT string with colon seperator which will override the full RT.\n",
- "title": "Rt Override"
- },
- "rd_override": {
- "type": "string",
- "description": "By default the MAC VRF RD will be derived from mac_vrf_id_base + vlan_id.\nThe rt_override allows us to override this value and statically define it.\nrd_override will default to rt_override or vni_override if set.\n\nrd_override supports two formats:\n - 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).\n - A full RD string with colon seperator which will override the full RD.\n",
- "title": "Rd Override"
- },
- "tags": {
- "type": "array",
- "description": "Tags leveraged for networks services filtering.\nTags are matched against \"filter.tags\" defined under node type settings.\nTags are also matched against the \"node_group\" name under node type settings.\n",
- "default": [
- "all"
- ],
- "items": {
- "type": "string",
- "description": "Tag value."
- },
- "title": "Tags"
- },
- "trunk_groups": {
- "type": "array",
- "items": {
- "type": "string",
- "description": "Trunk groups are used for limiting vlans to trunk ports assigned to the same trunk group.\nRequires \"enable_trunk_groups: true\".\n"
- },
- "title": "Trunk Groups"
- },
- "evpn_l2_multicast": {
- "type": "object",
- "description": "Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.\nWhen evpn_l2_multicast.enabled is set to true for a vlan or a tenant, \"igmp snooping\" and \"igmp snooping querier\" will always be enabled, overriding those individual settings.\n",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EVPN L2 Multicast"
- },
- "evpn_l3_multicast": {
- "type": "object",
- "description": "Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.\n",
- "properties": {
- "enabled": {
+ "ipv6_nd_ra_disabled": {
"type": "boolean",
- "title": "Enabled"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "EVPN L3 Multicast"
- },
- "igmp_snooping_enabled": {
- "type": "boolean",
- "description": "Enable IGMP Snooping (Enabled by default on EOS).",
- "title": "IGMP Snooping Enabled"
- },
- "igmp_snooping_querier": {
- "type": "object",
- "properties": {
- "enabled": {
+ "title": "IPv6 ND RA Disabled"
+ },
+ "ipv6_nd_managed_config_flag": {
"type": "boolean",
- "description": "Will be enabled automatically if evpn_l2_multicast is enabled.",
- "title": "Enabled"
+ "title": "IPv6 ND Managed Config Flag"
},
- "source_address": {
+ "ipv6_nd_prefixes": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ipv6_prefix": {
+ "type": "string",
+ "description": "IPv6_address/Mask",
+ "title": "IPv6 Prefix"
+ },
+ "valid_lifetime": {
+ "type": "string",
+ "description": "In seconds <0-4294967295> or infinite",
+ "title": "Valid Lifetime"
+ },
+ "preferred_lifetime": {
+ "type": "string",
+ "description": "In seconds <0-4294967295> or infinite",
+ "title": "Preferred Lifetime"
+ },
+ "no_autoconfig_flag": {
+ "type": "boolean",
+ "title": "No Autoconfig Flag"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "ipv6_prefix"
+ ]
+ },
+ "title": "IPv6 ND Prefixes"
+ },
+ "ipv6_dhcp_relay_destinations": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "DHCP server's IPv6 address",
+ "title": "Address"
+ },
+ "vrf": {
+ "type": "string",
+ "title": "VRF"
+ },
+ "local_interface": {
+ "type": "string",
+ "description": "Local interface to communicate with DHCP server - mutually exclusive to source_address",
+ "title": "Local Interface"
+ },
+ "source_address": {
+ "type": "string",
+ "description": "Source IPv6 address to communicate with DHCP server - mutually exclusive to local_interface",
+ "title": "Source Address"
+ },
+ "link_address": {
+ "type": "string",
+ "description": "Override the default link address specified in the relayed DHCP packet",
+ "title": "Link Address"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "address"
+ ]
+ },
+ "title": "IPv6 DHCP Relay Destinations"
+ },
+ "access_group_in": {
"type": "string",
- "description": "IPv4_address\nIf not set, IP address of \"Loopback0\" will be used.\n",
- "title": "Source Address"
+ "description": "IPv4 access-list name",
+ "title": "Access Group In"
},
- "version": {
- "type": "integer",
- "description": "IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).",
- "enum": [
- 1,
- 2,
- 3
- ],
- "title": "Version"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "IGMP Snooping Querier"
- },
- "vxlan": {
- "type": "boolean",
- "default": true,
- "description": "Extend this SVI over VXLAN.",
- "title": "VxLAN"
- },
- "mtu": {
- "type": "integer",
- "description": "Interface MTU.",
- "title": "MTU"
- },
- "ospf": {
- "type": "object",
- "description": "OSPF interface configuration.",
- "properties": {
- "enabled": {
- "type": "boolean",
- "title": "Enabled"
+ "access_group_out": {
+ "type": "string",
+ "description": "IPv4 access-list name",
+ "title": "Access Group Out"
},
- "point_to_point": {
+ "ipv6_access_group_in": {
+ "type": "string",
+ "description": "IPv6 access-list name",
+ "title": "IPv6 Access Group In"
+ },
+ "ipv6_access_group_out": {
+ "type": "string",
+ "description": "IPv6 access-list name",
+ "title": "IPv6 Access Group Out"
+ },
+ "multicast": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "IPv4 access-list name or IPv4 multicast group prefix with mask",
+ "title": "Boundary"
+ },
+ "out": {
+ "type": "boolean",
+ "title": "Out"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "boundary"
+ ]
+ },
+ "title": "Boundaries"
+ },
+ "source_route_export": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "administrative_distance": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "title": "Administrative Distance"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Route Export"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "boundaries": {
+ "type": "array",
+ "description": "Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix but not combination of both",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundary": {
+ "type": "string",
+ "description": "IPv6 access-list name or IPv6 multicast group prefix with mask",
+ "title": "Boundary"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "boundary"
+ ]
+ },
+ "title": "Boundaries"
+ },
+ "source_route_export": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "administrative_distance": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "title": "Administrative Distance"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Source Route Export"
+ },
+ "static": {
+ "type": "boolean",
+ "title": "Static"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Multicast"
+ },
+ "ospf_network_point_to_point": {
"type": "boolean",
- "default": true,
- "title": "Point To Point"
+ "title": "OSPF Network Point To Point"
},
- "area": {
+ "ospf_area": {
"type": "string",
- "description": "OSPF area ID.",
- "default": "0",
- "title": "Area"
+ "title": "OSPF Area"
},
- "cost": {
+ "ospf_cost": {
"type": "integer",
- "description": "OSPF link cost.",
- "title": "Cost"
+ "title": "OSPF Cost"
},
- "authentication": {
+ "ospf_authentication": {
"type": "string",
"enum": [
+ "none",
"simple",
"message-digest"
],
- "title": "Authentication"
+ "title": "OSPF Authentication"
},
- "simple_auth_key": {
+ "ospf_authentication_key": {
"type": "string",
- "description": "Password used with simple authentication.",
- "title": "Simple Auth Key"
+ "description": "Encrypted password used for simple authentication",
+ "title": "OSPF Authentication Key"
},
- "message_digest_keys": {
+ "ospf_message_digest_keys": {
"type": "array",
+ "description": "Keys used for message-digest authentication",
"items": {
"type": "object",
"properties": {
@@ -6119,57 +17411,414 @@
"sha384",
"sha512"
],
- "default": "sha512",
"title": "Hash Algorithm"
},
"key": {
"type": "string",
- "description": "Type 7 encrypted key.",
+ "description": "Encrypted password",
"title": "Key"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "OSPF Message Digest Keys"
+ },
+ "pim": {
+ "type": "object",
+ "properties": {
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "dr_priority": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 429467295,
+ "title": "DR Priority"
+ },
+ "sparse_mode": {
+ "type": "boolean",
+ "title": "Sparse Mode"
+ },
+ "local_interface": {
+ "type": "string",
+ "title": "Local Interface"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
}
},
- "title": "Message Digest Keys"
- }
- },
- "additionalProperties": false,
- "patternProperties": {
- "^_.+$": {}
- },
- "title": "OSPF"
- },
- "bgp": {
- "type": "object",
- "properties": {
- "structured_config": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PIM"
+ },
+ "isis_enable": {
+ "type": "string",
+ "description": "ISIS instance name",
+ "title": "ISIS Enable"
+ },
+ "isis_passive": {
+ "type": "boolean",
+ "title": "ISIS Passive"
+ },
+ "isis_metric": {
+ "type": "integer",
+ "title": "ISIS Metric"
+ },
+ "isis_network_point_to_point": {
+ "type": "boolean",
+ "title": "ISIS Network Point To Point"
+ },
+ "mtu": {
+ "type": "integer",
+ "title": "MTU"
+ },
+ "no_autostate": {
+ "type": "boolean",
+ "title": "No Autostate"
+ },
+ "vrrp_ids": {
+ "type": "array",
+ "description": "Improved \"vrrp\" data model to support multiple VRRP IDs",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "VRID",
+ "title": "ID"
+ },
+ "priority_level": {
+ "type": "integer",
+ "description": "Instance priority",
+ "title": "Priority Level"
+ },
+ "advertisement": {
+ "type": "object",
+ "properties": {
+ "interval": {
+ "type": "integer",
+ "description": "Interval in seconds",
+ "title": "Interval"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Advertisement"
+ },
+ "preempt": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "delay": {
+ "type": "object",
+ "properties": {
+ "minimum": {
+ "type": "integer",
+ "description": "Minimum preempt delay in seconds",
+ "title": "Minimum"
+ },
+ "reload": {
+ "type": "integer",
+ "description": "Reload preempt delay in seconds",
+ "title": "Reload"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Delay"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Preempt"
+ },
+ "timers": {
+ "type": "object",
+ "properties": {
+ "delay": {
+ "type": "object",
+ "properties": {
+ "reload": {
+ "type": "integer",
+ "description": "Delay after reload in seconds.",
+ "title": "Reload"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Delay"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Timers"
+ },
+ "tracked_object": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Tracked object name",
+ "title": "Name"
+ },
+ "decrement": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 254,
+ "description": "Decrement VRRP priority by 1-254",
+ "title": "Decrement"
+ },
+ "shutdown": {
+ "type": "boolean",
+ "title": "Shutdown"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "title": "Tracked Object"
+ },
+ "ipv4": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "Virtual IPv4 address",
+ "title": "Address"
+ },
+ "version": {
+ "type": "integer",
+ "enum": [
+ 2,
+ 3
+ ],
+ "title": "Version"
+ }
+ },
+ "required": [
+ "address"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "object",
+ "properties": {
+ "address": {
+ "type": "string",
+ "description": "Virtual IPv6 address",
+ "title": "Address"
+ }
+ },
+ "required": [
+ "address"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "required": [
+ "id"
+ ]
+ },
+ "title": "VRRP IDs"
+ },
+ "vrrp": {
"type": "object",
- "description": "Structured configuration and EOS CLI commands rendered on router_bgp.vlans.\nThis configuration will not be applied to vlan aware bundles\n",
- "title": "Structured Config"
+ "description": "\"vrrp\" should not be mixed with the new \"vrrp_ids\" key above to avoid conflicts.\n\nThis key is deprecated. Support will be removed in AVD version 5.0.0. Use vrrp_ids instead.",
+ "deprecated": true,
+ "properties": {
+ "virtual_router": {
+ "type": "string",
+ "description": "Virtual Router ID",
+ "title": "Virtual Router"
+ },
+ "priority": {
+ "type": "integer",
+ "description": "Instance priority",
+ "title": "Priority"
+ },
+ "advertisement_interval": {
+ "type": "integer",
+ "title": "Advertisement Interval"
+ },
+ "preempt_delay_minimum": {
+ "type": "integer",
+ "title": "Preempt Delay Minimum"
+ },
+ "ipv4": {
+ "type": "string",
+ "description": "Virtual IPv4 address",
+ "title": "IPv4"
+ },
+ "ipv6": {
+ "type": "string",
+ "description": "Virtual IPv6 address",
+ "title": "IPv6"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "VRRP"
},
- "raw_eos_cli": {
+ "ip_attached_host_route_export": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "title": "Enabled"
+ },
+ "distance": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 255,
+ "title": "Distance"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "IP Attached Host Route Export"
+ },
+ "bfd": {
+ "type": "object",
+ "properties": {
+ "echo": {
+ "type": "boolean",
+ "title": "Echo"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "Rate in milliseconds",
+ "title": "Interval"
+ },
+ "min_rx": {
+ "type": "integer",
+ "description": "Minimum RX hold time in milliseconds",
+ "title": "Min RX"
+ },
+ "multiplier": {
+ "type": "integer",
+ "minimum": 3,
+ "maximum": 50,
+ "title": "Multiplier"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BFD"
+ },
+ "service_policy": {
+ "type": "object",
+ "properties": {
+ "pbr": {
+ "type": "object",
+ "properties": {
+ "input": {
+ "type": "string",
+ "description": "Name of policy-map used for policy based routing",
+ "title": "Input"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "PBR"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "Service Policy"
+ },
+ "pvlan_mapping": {
"type": "string",
- "description": "EOS CLI rendered directly on the Router BGP, VLAN definition in the final EOS configuration.\n",
- "title": "Raw EOS CLI"
+ "description": "List of VLANs as string",
+ "title": "PVLAN Mapping"
+ },
+ "tenant": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tenant"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Tags"
+ },
+ "type": {
+ "type": "string",
+ "description": "Key only used for documentation or validation purposes",
+ "title": "Type"
+ },
+ "eos_cli": {
+ "type": "string",
+ "description": "Multiline EOS CLI rendered directly on the VLAN interface in the final EOS configuration",
+ "title": "EOS CLI"
}
},
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
},
- "title": "BGP"
- },
- "raw_eos_cli": {
- "type": "string",
- "description": "EOS CLI rendered directly on the VLAN interface in the final EOS configuration.\n",
- "title": "Raw EOS CLI"
- },
- "structured_config": {
- "type": "object",
- "description": "Custom structured config added under vlan_interfaces. for eos_cli_config_gen.",
"title": "Structured Config"
}
},
@@ -6385,13 +18034,13 @@
"title": "Access List Name"
}
},
- "required": [
- "rp"
- ],
"additionalProperties": false,
"patternProperties": {
"^_.+$": {}
- }
+ },
+ "required": [
+ "rp"
+ ]
},
"title": "Underlay Multicast RPs"
},
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 8952f6cec7c..3d7147ddaee 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
@@ -198,8 +198,11 @@ keys:
default: false
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
mlag_ipv4_underlay_peer:
type: dict
keys:
@@ -215,8 +218,11 @@ keys:
default: false
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
evpn_overlay_peers:
type: dict
keys:
@@ -232,8 +238,11 @@ keys:
default: true
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
evpn_overlay_core:
type: dict
keys:
@@ -249,8 +258,11 @@ keys:
default: true
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
mpls_overlay_peers:
type: dict
keys:
@@ -266,8 +278,11 @@ keys:
default: true
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
rr_overlay_peers:
type: dict
keys:
@@ -283,8 +298,11 @@ keys:
default: true
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
ipvpn_gateway_peers:
type: dict
keys:
@@ -300,8 +318,11 @@ keys:
default: true
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups.
+ description: Custom structured config added under router_bgp.peer_groups.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/
IPv4_UNDERLAY_PEERS:
type: dict
deprecation:
@@ -585,7 +606,6 @@ keys:
keys:
node_type:
type: str
- required: true
description: Resulting node type when regex matches.
match_hostnames:
type: list
@@ -2495,7 +2515,6 @@ keys:
type: dict
keys:
rp:
- required: true
type: str
description: RP IPv4 address.
nodes:
@@ -3222,16 +3241,22 @@ $defs:
the final EOS configuration.
structured_config:
type: dict
- description: Custom structured config added under port_channel_interfaces.
+ description: Custom structured config added under port_channel_interfaces.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/port_channel_interfaces/items/
raw_eos_cli:
type: str
description: EOS CLI rendered directly on the ethernet interface in the final
EOS configuration.
structured_config:
type: dict
- description: Custom structured config added under ethernet_interfaces.
+ description: Custom structured config added under ethernet_interfaces.[name=]
for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/ethernet_interfaces/items/
connected_endpoints:
type: list
primary_key: name
@@ -3252,7 +3277,6 @@ $defs:
name:
type: str
description: Endpoint name will be used in the switchport description.
- required: true
rack:
type: str
description: Rack is used for documentation purposes only.
@@ -3325,7 +3349,6 @@ $defs:
keys:
name:
type: str
- required: true
description: P2P pool name.
ipv4_pool:
type: str
@@ -3349,7 +3372,6 @@ $defs:
keys:
name:
type: str
- required: true
description: P2P profile name. Any variable supported under p2p_links
can be inherited from a profile.
p2p_links:
@@ -3376,7 +3398,6 @@ $defs:
keys:
name:
type: str
- required: true
description: 'Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
@@ -4119,10 +4140,11 @@ $defs:
type: bool
structured_config:
type: dict
- description: 'Custom structured config added under ethernet_interfaces.
+ description: Custom structured config added under ethernet_interfaces.[name=]
for eos_cli_config_gen.
-
- '
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/ethernet_interfaces/items/
raw_eos_cli:
type: str
description: 'EOS CLI rendered directly on the Ethernet interface
@@ -4370,10 +4392,11 @@ $defs:
'
structured_config:
type: dict
- description: 'Custom structured config added under router_bgp.vrfs.
+ description: Custom structured config added under router_bgp.vrfs.[name=]
for eos_cli_config_gen.
-
- '
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/vrfs/items/
bgp_peer_groups:
documentation_options:
table: network-services-vrfs-bgp-settings
@@ -4438,6 +4461,9 @@ $defs:
structured_config:
type: dict
description: Custom structured config for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/
l2vlans:
documentation_options:
table: network-services-l2vlans-settings
@@ -4580,12 +4606,15 @@ $defs:
keys:
structured_config:
type: dict
- description: 'Structured configuration for eos_cli_config_gen
- rendered on router_bgp.vlans.
+ description: 'Custom structured config added under router_bgp.vlans.[id=]
+ for eos_cli_config_gen.
This configuration will not be applied to vlan aware bundles.
'
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/vlans/items/
raw_eos_cli:
type: str
description: 'EOS cli commands rendered on router_bgp.vlans.
@@ -4852,8 +4881,10 @@ $defs:
structured_config:
documentation_options:
table: node-type-common-configuration
+ hide_keys: true
description: Custom structured config for eos_cli_config_gen.
type: dict
+ $ref: eos_cli_config_gen#/
uplink_ipv4_pool:
documentation_options:
table: node-type-uplink-configuration
@@ -4983,30 +5014,36 @@ $defs:
uplink_structured_config:
documentation_options:
table: node-type-uplink-configuration
+ hide_keys: true
type: dict
description: 'Custom structured config applied to "uplink_interfaces",
and "uplink_switch_interfaces".
- When uplink_type == "p2p", custom structured config added under ethernet_interfaces.
+ When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=]
for eos_cli_config_gen overrides the settings on the ethernet interface
level.
When uplink_type == "port-channel", custom structured config added under
- port_channel_interfaces. for eos_cli_config_gen overrides
+ port_channel_interfaces.[name=] for eos_cli_config_gen overrides
the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so
it can override "structured_config" defined on node-level.
+ Note! The content of this dictionary is _not_ validated by the schema,
+ since it can be either ethernet_interfaces or port_channel_interfaces.
+
'
mlag_port_channel_structured_config:
+ $ref: eos_cli_config_gen#/keys/port_channel_interfaces/items/
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: 'Custom structured config applied to MLAG peer link port-channel
id.
- Added under port_channel_interfaces. for eos_cli_config_gen.
+ Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
@@ -5015,13 +5052,15 @@ $defs:
'
mlag_peer_vlan_structured_config:
+ $ref: eos_cli_config_gen#/keys/vlan_interfaces/items/
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: 'Custom structured config applied to MLAG Peer Link (control
link) SVI interface id.
- Added under vlan_interfaces. for eos_cli_config_gen.
+ Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
@@ -5030,13 +5069,15 @@ $defs:
'
mlag_peer_l3_vlan_structured_config:
+ $ref: eos_cli_config_gen#/keys/vlan_interfaces/items/
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: 'Custom structured config applied to MLAG underlay L3 peering
SVI interface id.
- Added under vlan_interfaces. for eos_cli_config_gen.
+ Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
@@ -5940,7 +5981,6 @@ $defs:
keys:
group:
type: str
- required: true
description: 'The Node Group Name is used for MLAG domain unless set
with ''mlag_domain_id''.
@@ -5964,7 +6004,6 @@ $defs:
keys:
name:
type: str
- required: true
description: The Node Name is used as "hostname".
p2p_links:
type: list
@@ -6117,7 +6156,6 @@ $defs:
keys:
node:
type: str
- required: true
interfaces:
type: list
description: List of node interfaces. Ex.- [ 'node1 interface1',
@@ -6130,7 +6168,12 @@ $defs:
the final EOS configuration.
structured_config:
type: dict
- description: Custom structured config for interfaces
+ documentation_options:
+ hide_keys: true
+ description: 'Custom structured config for interfaces
+
+ Note! The content of this dictionary is _not_ validated by the schema,
+ since it can be either ethernet_interfaces or port_channel_interfaces.'
svi:
type: dict
$ref: '#/$defs/svi_settings'
@@ -6457,11 +6500,14 @@ $defs:
structured_config:
type: dict
description: 'Structured configuration and EOS CLI commands rendered on
- router_bgp.vlans.
+ router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
'
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/router_bgp/keys/vlans/items/
raw_eos_cli:
type: str
description: 'EOS CLI rendered directly on the Router BGP, VLAN definition
@@ -6476,5 +6522,10 @@ $defs:
'
structured_config:
type: dict
- description: Custom structured config added under vlan_interfaces.
+ description: 'Custom structured config added under vlan_interfaces.[name=]
for eos_cli_config_gen.
+
+ '
+ documentation_options:
+ hide_keys: true
+ $ref: eos_cli_config_gen#/keys/vlan_interfaces/items/
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/bgp_peer_groups.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/bgp_peer_groups.schema.yml
index 5059843fa73..4ac047210fd 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/bgp_peer_groups.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/bgp_peer_groups.schema.yml
@@ -26,7 +26,10 @@ keys:
default: False
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
mlag_ipv4_underlay_peer:
type: dict
keys:
@@ -42,7 +45,10 @@ keys:
default: False
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
evpn_overlay_peers:
type: dict
keys:
@@ -58,7 +64,10 @@ keys:
default: True
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
evpn_overlay_core:
type: dict
keys:
@@ -74,7 +83,10 @@ keys:
default: True
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
mpls_overlay_peers:
type: dict
keys:
@@ -90,7 +102,10 @@ keys:
default: True
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
rr_overlay_peers:
type: dict
keys:
@@ -106,7 +121,10 @@ keys:
default: True
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
ipvpn_gateway_peers:
type: dict
keys:
@@ -122,7 +140,10 @@ keys:
default: True
structured_config:
type: dict
- description: Custom structured config added under router_bgp.peer_groups. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.peer_groups.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/peer_groups/items/"
IPv4_UNDERLAY_PEERS:
type: dict
deprecation:
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/default_node_types.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/default_node_types.schema.yml
index 75cc79ca8ae..37f9fc0e93c 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/default_node_types.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/default_node_types.schema.yml
@@ -12,7 +12,6 @@ keys:
keys:
node_type:
type: str
- required: true
description: Resulting node type when regex matches.
match_hostnames:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_adapter_config.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_adapter_config.schema.yml
index d4920e78b53..c20f948c1c4 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_adapter_config.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_adapter_config.schema.yml
@@ -521,10 +521,16 @@ $defs:
description: EOS CLI rendered directly on the port-channel interface in the final EOS configuration.
structured_config:
type: dict
- description: Custom structured config added under port_channel_interfaces. for eos_cli_config_gen.
+ description: Custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/port_channel_interfaces/items/"
raw_eos_cli:
type: str
description: EOS CLI rendered directly on the ethernet interface in the final EOS configuration.
structured_config:
type: dict
- description: Custom structured config added under ethernet_interfaces. for eos_cli_config_gen.
+ description: Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/"
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_connected_endpoints.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_connected_endpoints.schema.yml
index 1cfdec9bf55..46b19b61036 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_connected_endpoints.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_connected_endpoints.schema.yml
@@ -18,7 +18,6 @@ $defs:
name:
type: str
description: Endpoint name will be used in the switchport description.
- required: true
rack:
type: str
description: Rack is used for documentation purposes only.
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_l3_edge.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_l3_edge.schema.yml
index 031162b758e..7a2fda4a6f3 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_l3_edge.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_l3_edge.schema.yml
@@ -17,7 +17,6 @@ $defs:
keys:
name:
type: str
- required: true
description: P2P pool name.
ipv4_pool:
type: str
@@ -41,7 +40,6 @@ $defs:
keys:
name:
type: str
- required: true
description: P2P profile name. Any variable supported under p2p_links can be inherited from a profile.
p2p_links:
type: list
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
index 3562aec35bc..a3997b97882 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_network_services.schema.yml
@@ -15,7 +15,6 @@ $defs:
keys:
name:
type: str
- required: true
description: |
Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
@@ -606,8 +605,10 @@ $defs:
type: bool
structured_config:
type: dict
- description: |
- Custom structured config added under ethernet_interfaces. for eos_cli_config_gen.
+ description: Custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/"
raw_eos_cli:
type: str
description: |
@@ -817,8 +818,10 @@ $defs:
EOS CLI rendered directly on the Router BGP, VRF definition in the final EOS configuration.
structured_config:
type: dict
- description: |
- Custom structured config added under router_bgp.vrfs. for eos_cli_config_gen.
+ description: Custom structured config added under router_bgp.vrfs.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/vrfs/items/"
bgp_peer_groups:
documentation_options:
table: network-services-vrfs-bgp-settings
@@ -870,6 +873,9 @@ $defs:
structured_config:
type: dict
description: Custom structured config for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/"
l2vlans:
documentation_options:
table: network-services-l2vlans-settings
@@ -992,8 +998,11 @@ $defs:
structured_config:
type: dict
description: |
- Structured configuration for eos_cli_config_gen rendered on router_bgp.vlans.
+ Custom structured config added under router_bgp.vlans.[id=] for eos_cli_config_gen.
This configuration will not be applied to vlan aware bundles.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/vlans/items/"
raw_eos_cli:
type: str
description: |
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_node_type.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_node_type.schema.yml
index 6a5edf90e93..8a0311e7ba5 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_node_type.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_node_type.schema.yml
@@ -150,8 +150,10 @@ $defs:
structured_config:
documentation_options:
table: node-type-common-configuration
+ hide_keys: true
description: Custom structured config for eos_cli_config_gen.
type: dict
+ $ref: "eos_cli_config_gen#/"
uplink_ipv4_pool:
documentation_options:
table: node-type-uplink-configuration
@@ -254,38 +256,48 @@ $defs:
uplink_structured_config:
documentation_options:
table: node-type-uplink-configuration
+ hide_keys: true
#TODO: Add deprecation warning when introducing new keys for specific configuration.
type: dict
description: |
Custom structured config applied to "uplink_interfaces", and "uplink_switch_interfaces".
- When uplink_type == "p2p", custom structured config added under ethernet_interfaces. for eos_cli_config_gen overrides the settings on the ethernet interface level.
- When uplink_type == "port-channel", custom structured config added under port_channel_interfaces. for eos_cli_config_gen overrides the settings on the port-channel interface level.
+ When uplink_type == "p2p", custom structured config added under ethernet_interfaces.[name=] for eos_cli_config_gen overrides the settings on the ethernet interface level.
+ When uplink_type == "port-channel", custom structured config added under port_channel_interfaces.[name=] for eos_cli_config_gen overrides the settings on the port-channel interface level.
"uplink_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
+ Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
+ # Schema ref not implemented since we do not know which of the schemas to look at.
+ # $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/"
mlag_port_channel_structured_config:
+ $ref: "eos_cli_config_gen#/keys/port_channel_interfaces/items/"
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: |
Custom structured config applied to MLAG peer link port-channel id.
- Added under port_channel_interfaces. for eos_cli_config_gen.
+ Added under port_channel_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the port-channel interface level.
"mlag_port_channel_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
mlag_peer_vlan_structured_config:
+ $ref: "eos_cli_config_gen#/keys/vlan_interfaces/items/"
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: |
Custom structured config applied to MLAG Peer Link (control link) SVI interface id.
- Added under vlan_interfaces. for eos_cli_config_gen.
+ Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
mlag_peer_l3_vlan_structured_config:
+ $ref: "eos_cli_config_gen#/keys/vlan_interfaces/items/"
documentation_options:
table: node-type-l2-mlag-configuration
+ hide_keys: true
type: dict
description: |
Custom structured config applied to MLAG underlay L3 peering SVI interface id.
- Added under vlan_interfaces. for eos_cli_config_gen.
+ Added under vlan_interfaces.[name=] for eos_cli_config_gen.
Overrides the settings on the vlan interface level.
"mlag_peer_l3_vlan_structured_config" is applied after "structured_config", so it can override "structured_config" defined on node-level.
short_esi:
@@ -1032,7 +1044,6 @@ $defs:
keys:
group:
type: str
- required: true
description: |
The Node Group Name is used for MLAG domain unless set with 'mlag_domain_id'.
The Node Group Name is also used for peer description on downstream switches' uplinks.
@@ -1052,5 +1063,4 @@ $defs:
keys:
name:
type: str
- required: true
description: The Node Name is used as "hostname".
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_p2p_links.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_p2p_links.schema.yml
index 1640188b996..0ab3fbe7e3a 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_p2p_links.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_p2p_links.schema.yml
@@ -140,7 +140,6 @@ $defs:
keys:
node:
type: str
- required: true
interfaces:
type: list
description: List of node interfaces. Ex.- [ 'node1 interface1', 'node1 interface2' ].
@@ -151,4 +150,10 @@ $defs:
description: EOS CLI rendered directly on the point-to-point interface in the final EOS configuration.
structured_config:
type: dict
- description: Custom structured config for interfaces
+ documentation_options:
+ hide_keys: true
+ description: |-
+ Custom structured config for interfaces
+ Note! The content of this dictionary is _not_ validated by the schema, since it can be either ethernet_interfaces or port_channel_interfaces.
+ # Schema ref not implemented since we do not know which of the schemas to look at.
+ # $ref: "eos_cli_config_gen#/keys/ethernet_interfaces/items/"
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
index d4e97fe51aa..e6bbec5619a 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/defs_svi_settings.schema.yml
@@ -261,8 +261,11 @@ $defs:
structured_config:
type: dict
description: |
- Structured configuration and EOS CLI commands rendered on router_bgp.vlans.
+ Structured configuration and EOS CLI commands rendered on router_bgp.vlans.[id=]
This configuration will not be applied to vlan aware bundles
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/router_bgp/keys/vlans/items/"
raw_eos_cli:
type: str
description: |
@@ -274,4 +277,7 @@ $defs:
structured_config:
type: dict
description: |
- Custom structured config added under vlan_interfaces. for eos_cli_config_gen.
+ Custom structured config added under vlan_interfaces.[name=] for eos_cli_config_gen.
+ documentation_options:
+ hide_keys: true
+ $ref: "eos_cli_config_gen#/keys/vlan_interfaces/items/"
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/underlay_multicast_rps.schema.yml b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/underlay_multicast_rps.schema.yml
index 336f4ac5e63..1a48c536758 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/underlay_multicast_rps.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/schema_fragments/underlay_multicast_rps.schema.yml
@@ -19,7 +19,6 @@ keys:
type: dict
keys:
rp:
- required: true
type: str
description: RP IPv4 address.
nodes:
diff --git a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/merge/access_lists.schema.yml b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/merge/access_lists.schema.yml
index e8037b73560..eebc269522b 100644
--- a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/merge/access_lists.schema.yml
+++ b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/merge/access_lists.schema.yml
@@ -22,7 +22,6 @@ keys:
keys:
name:
type: str
- required: true
display_name: access_list_name
counters_per_entry:
type: bool
@@ -37,7 +36,6 @@ keys:
keys:
sequence:
type: int
- required: true
display_name: sequence_id
convert_types:
- str
diff --git a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/access_lists.schema.yml b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/access_lists.schema.yml
index e8037b73560..eebc269522b 100644
--- a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/access_lists.schema.yml
+++ b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/access_lists.schema.yml
@@ -22,7 +22,6 @@ keys:
keys:
name:
type: str
- required: true
display_name: access_list_name
counters_per_entry:
type: bool
@@ -37,7 +36,6 @@ keys:
keys:
sequence:
type: int
- required: true
display_name: sequence_id
convert_types:
- str
diff --git a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/combined.schema.yml b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/combined.schema.yml
index 55667b08fe7..7e60f0855fe 100644
--- a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/combined.schema.yml
+++ b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/combined.schema.yml
@@ -30,7 +30,6 @@ keys:
keys:
name:
type: str
- required: true
display_name: access_list_name
counters_per_entry:
type: bool
@@ -45,7 +44,6 @@ keys:
keys:
sequence:
type: int
- required: true
display_name: sequence_id
convert_types:
- str
@@ -64,7 +62,6 @@ keys:
keys:
name:
type: str
- required: true
display_name: ipv6_access_list_name
counters_per_entry:
type: bool
@@ -81,7 +78,6 @@ keys:
type: int
convert_types:
- str
- required: true
display_name: sequence_id
action:
type: str
diff --git a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/ipv6_standard_access_lists.schema.yml b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/ipv6_standard_access_lists.schema.yml
index 7d92f31a5bf..3fde60e4490 100644
--- a/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/ipv6_standard_access_lists.schema.yml
+++ b/ansible_collections/arista/avd/tests/unit/plugins/plugin_utils/schema/ipv6_standard_access_lists.schema.yml
@@ -12,7 +12,6 @@ keys:
keys:
name:
type: str
- required: true
display_name: ipv6_access_list_name
counters_per_entry:
type: bool
@@ -29,7 +28,6 @@ keys:
type: int
convert_types:
- str
- required: true
display_name: sequence_id
action:
type: str