From a0013029451b1ef9982a6c87d1c043696d532616 Mon Sep 17 00:00:00 2001 From: Vibhu-gslab Date: Fri, 20 Dec 2024 22:06:07 +0530 Subject: [PATCH] Feat(eos_designs): Add missing schemas for eos_designs --- .../intended/configs/DC1-BL1A.cfg | 13 ++++++++ .../intended/structured_configs/DC1-BL1A.yml | 13 ++++++++ .../inventory/host_vars/DC1-BL1A.yml | 19 ++++++++++++ .../roles/eos_designs/docs/input-variables.md | 22 ++++++++++++++ .../eos_designs/docs/tables/event-monitor.md | 16 ++++++++++ .../docs/tables/load-interval-default.md | 16 ++++++++++ .../docs/tables/queue-monitor-streaming.md | 30 +++++++++++++++++++ .../docs/tables/unsupported-transceiver.md | 20 +++++++++++++ .../pyavd/_eos_designs/schema/__init__.py | 24 +++++++++++++++ .../schema/eos_designs.schema.yml | 12 ++++++++ .../schema_fragments/event_monitor.schema.yml | 10 +++++++ .../load_interval_default.schema.yml | 12 ++++++++ .../queue_monitor_streaming.schema.yml | 11 +++++++ .../unsupported_transceiver.schema.yml | 11 +++++++ .../structured_config/base/__init__.py | 24 ++++----------- 15 files changed, 235 insertions(+), 18 deletions(-) create mode 100644 ansible_collections/arista/avd/roles/eos_designs/docs/tables/event-monitor.md create mode 100644 ansible_collections/arista/avd/roles/eos_designs/docs/tables/load-interval-default.md create mode 100644 ansible_collections/arista/avd/roles/eos_designs/docs/tables/queue-monitor-streaming.md create mode 100644 ansible_collections/arista/avd/roles/eos_designs/docs/tables/unsupported-transceiver.md create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/event_monitor.schema.yml create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/load_interval_default.schema.yml create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/queue_monitor_streaming.schema.yml create mode 100644 python-avd/pyavd/_eos_designs/schema/schema_fragments/unsupported_transceiver.schema.yml diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-BL1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-BL1A.cfg index 800bf4490e1..a03b2e77912 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-BL1A.cfg +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/DC1-BL1A.cfg @@ -15,6 +15,10 @@ daemon TerminAttr ! vlan internal order ascending range 1006 1199 ! +event-monitor +! +load-interval default 6 +! transceiver qsfp default-mode 4x10G ! service routing protocols model multi-agent @@ -45,6 +49,8 @@ spanning-tree mode mstp spanning-tree root super spanning-tree mst 0 priority 4096 ! +service unsupported-transceiver key1 dsafDSFfvadskjh3424 +! clock timezone correctly_templated_timezone ! vlan 150 @@ -73,6 +79,13 @@ vrf instance Tenant_C_WAN_Zone ! vrf instance TENANT_D_WAN_ZONE ! +queue-monitor streaming + max-connections 8 + ip access-group ACL-QMS + ipv6 access-group ACLv6-QMS + vrf vrf1 + no shutdown +! management api http-commands protocol https no default-services diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-BL1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-BL1A.yml index bf34edaab87..8db6344382b 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-BL1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/DC1-BL1A.yml @@ -354,6 +354,8 @@ config_end: true enable_password: disabled: true transceiver_qsfp_default_mode_4x10: true +event_monitor: + enabled: true event_handlers: - name: evpn-blacklist-recovery actions: @@ -363,6 +365,8 @@ event_handlers: trigger_on_logging: regex: EVPN-3-BLACKLISTED_DUPLICATE_MAC asynchronous: true +load_interval: + default: 6 ip_name_servers: - ip_address: 192.168.200.5 vrf: MGMT @@ -380,6 +384,9 @@ spanning_tree: mst_instances: - id: '0' priority: 4096 +service_unsupported_transceiver: + license_name: key1 + license_key: dsafDSFfvadskjh3424 local_users: - name: admin disabled: true @@ -436,6 +443,12 @@ mac_address_table: aging_time: 42 notification_host_flap: logging: true +queue_monitor_streaming: + enable: true + ip_access_group: ACL-QMS + ipv6_access_group: ACLv6-QMS + max_connections: 8 + vrf: vrf1 management_api_http: enable_vrfs: - name: MGMT diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/DC1-BL1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/DC1-BL1A.yml index b7610e875cd..08747f206d6 100644 --- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/DC1-BL1A.yml +++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/host_vars/DC1-BL1A.yml @@ -20,6 +20,25 @@ router_id_loopback_description: "MY_ROUTER_ID_LOOPBACK" vtep_vvtep_ip: 192.168.255.255/32 +# Testing event_monitor +event_monitor: true + +# Testing load_interval_default +load_interval_default: 6 + +# Testing unsupported_transceiver +unsupported_transceiver: + license_name: key1 + license_key: dsafDSFfvadskjh3424 + +# Testing queue_monitor_streaming +queue_monitor_streaming: + enable: true + ip_access_group: ACL-QMS + ipv6_access_group: ACLv6-QMS + max_connections: 8 + vrf: vrf1 + # Testing event_handlers event_handlers: - name: evpn-blacklist-recovery diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md index f2b658a8152..f4281af4d7f 100644 --- a/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/input-variables.md @@ -927,6 +927,28 @@ roles/eos_designs/docs/tables/management-flow-tracking-settings.md roles/eos_designs/docs/tables/management-snmp-settings.md --8<-- +## Monitoring + +### Event monitor + +--8<-- +roles/eos_designs/docs/tables/event-monitor.md +--8<-- + +### Load interval + +--8<-- +roles/eos_designs/docs/tables/load-interval.md +--8<-- + +## Quality of Service + +### Queue monitor-streaming + +--8<-- +roles/eos_designs/docs/tables/queue-monitor-streaming.md +--8<-- + ## System settings --8<-- diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/event-monitor.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/event-monitor.md new file mode 100644 index 00000000000..3bfff0c0ca0 --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/event-monitor.md @@ -0,0 +1,16 @@ + +=== "Table" + + | Variable | Type | Required | Default | Value Restrictions | Description | + | -------- | ---- | -------- | ------- | ------------------ | ----------- | + | [event_monitor](## "event_monitor") | Boolean | | | | | + +=== "YAML" + + ```yaml + event_monitor: + ``` diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/load-interval-default.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/load-interval-default.md new file mode 100644 index 00000000000..fd769457adb --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/load-interval-default.md @@ -0,0 +1,16 @@ + +=== "Table" + + | Variable | Type | Required | Default | Value Restrictions | Description | + | -------- | ---- | -------- | ------- | ------------------ | ----------- | + | [load_interval_default](## "load_interval_default") | Integer | | | | | + +=== "YAML" + + ```yaml + load_interval_default: + ``` diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/queue-monitor-streaming.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/queue-monitor-streaming.md new file mode 100644 index 00000000000..d0346c46c47 --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/queue-monitor-streaming.md @@ -0,0 +1,30 @@ + +=== "Table" + + | Variable | Type | Required | Default | Value Restrictions | Description | + | -------- | ---- | -------- | ------- | ------------------ | ----------- | + | [queue_monitor_streaming](## "queue_monitor_streaming") | Dictionary | | | | | + | [  enable](## "queue_monitor_streaming.enable") | Boolean | | | | | + | [  ip_access_group](## "queue_monitor_streaming.ip_access_group") | String | | | | Name of IP ACL. | + | [  ipv6_access_group](## "queue_monitor_streaming.ipv6_access_group") | String | | | | Name of IPv6 ACL. | + | [  max_connections](## "queue_monitor_streaming.max_connections") | Integer | | | Min: 1
Max: 100 | | + | [  vrf](## "queue_monitor_streaming.vrf") | String | | | | | + +=== "YAML" + + ```yaml + queue_monitor_streaming: + enable: + + # Name of IP ACL. + ip_access_group: + + # Name of IPv6 ACL. + ipv6_access_group: + max_connections: + vrf: + ``` diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/unsupported-transceiver.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/unsupported-transceiver.md new file mode 100644 index 00000000000..1c0cd1d60a4 --- /dev/null +++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/unsupported-transceiver.md @@ -0,0 +1,20 @@ + +=== "Table" + + | Variable | Type | Required | Default | Value Restrictions | Description | + | -------- | ---- | -------- | ------- | ------------------ | ----------- | + | [unsupported_transceiver](## "unsupported_transceiver") | Dictionary | | | | | + | [  license_name](## "unsupported_transceiver.license_name") | String | | | | | + | [  license_key](## "unsupported_transceiver.license_key") | String | | | | | + +=== "YAML" + + ```yaml + unsupported_transceiver: + license_name: + license_key: + ``` diff --git a/python-avd/pyavd/_eos_designs/schema/__init__.py b/python-avd/pyavd/_eos_designs/schema/__init__.py index d0c0d567286..48ab8332953 100644 --- a/python-avd/pyavd/_eos_designs/schema/__init__.py +++ b/python-avd/pyavd/_eos_designs/schema/__init__.py @@ -12691,6 +12691,9 @@ def __init__( """ + class QueueMonitorStreaming(EosCliConfigGen.QueueMonitorStreaming): + """Subclass of AvdModel.""" + class Redundancy(AvdModel): """Subclass of AvdModel.""" @@ -15836,6 +15839,9 @@ def __init__( """ + class UnsupportedTransceiver(EosCliConfigGen.ServiceUnsupportedTransceiver): + """Subclass of AvdModel.""" + class UplinkPtp(AvdModel): """Subclass of AvdModel.""" @@ -54364,6 +54370,7 @@ def __init__( "eos_designs_custom_templates": {"type": EosDesignsCustomTemplates}, "eos_designs_documentation": {"type": EosDesignsDocumentation}, "event_handlers": {"type": EventHandlers}, + "event_monitor": {"type": bool}, "evpn_ebgp_gateway_inter_domain": {"type": bool}, "evpn_ebgp_gateway_multihop": {"type": int, "default": 15}, "evpn_ebgp_multihop": {"type": int, "default": 3}, @@ -54402,6 +54409,7 @@ def __init__( "isis_ti_lfa": {"type": IsisTiLfa}, "l3_edge": {"type": L3Edge}, "l3_interface_profiles": {"type": L3InterfaceProfiles}, + "load_interval_default": {"type": int}, "local_users": {"type": LocalUsers}, "mac_address_table": {"type": MacAddressTable}, "management_eapi": {"type": ManagementEapi}, @@ -54590,6 +54598,7 @@ def __init__( }, "ptp_settings": {"type": PtpSettings}, "queue_monitor_length": {"type": QueueMonitorLength}, + "queue_monitor_streaming": {"type": QueueMonitorStreaming}, "redundancy": {"type": Redundancy}, "router_id_loopback_description": {"type": str, "default": "ROUTER_ID"}, "serial_number": {"type": str}, @@ -54626,6 +54635,7 @@ def __init__( "underlay_ospf_process_id": {"type": int, "default": 100}, "underlay_rfc5549": {"type": bool, "default": False}, "underlay_routing_protocol": {"type": str}, + "unsupported_transceiver": {"type": UnsupportedTransceiver}, "uplink_ptp": {"type": UplinkPtp}, "use_cv_topology": {"type": bool}, "use_router_general_for_router_id": {"type": bool, "default": False}, @@ -55188,6 +55198,7 @@ def __init__( customize the system behavior, and implement workarounds to problems discovered in the field. """ + event_monitor: bool | None evpn_ebgp_gateway_inter_domain: bool | None evpn_ebgp_gateway_multihop: int """ @@ -55434,6 +55445,7 @@ def __init__( Subclass of AvdIndexedList with `L3InterfaceProfilesItem` items. Primary key is `profile` (`str`). """ + load_interval_default: int | None local_users: LocalUsers mac_address_table: MacAddressTable """ @@ -55956,6 +55968,8 @@ def __init__( """ queue_monitor_length: QueueMonitorLength """Subclass of AvdModel.""" + queue_monitor_streaming: QueueMonitorStreaming + """Subclass of AvdModel.""" redundancy: Redundancy """ Redundancy for chassis platforms with dual supervisors | Optional. @@ -56266,6 +56280,8 @@ def __init__( *Only supported with core_interfaces data model. """ + unsupported_transceiver: UnsupportedTransceiver + """Subclass of AvdModel.""" uplink_ptp: UplinkPtp """ Enable PTP on all infrastructure links. @@ -56451,6 +56467,7 @@ def __init__( eos_designs_custom_templates: EosDesignsCustomTemplates | UndefinedType = Undefined, eos_designs_documentation: EosDesignsDocumentation | UndefinedType = Undefined, event_handlers: EventHandlers | UndefinedType = Undefined, + event_monitor: bool | None | UndefinedType = Undefined, evpn_ebgp_gateway_inter_domain: bool | None | UndefinedType = Undefined, evpn_ebgp_gateway_multihop: int | UndefinedType = Undefined, evpn_ebgp_multihop: int | UndefinedType = Undefined, @@ -56486,6 +56503,7 @@ def __init__( isis_ti_lfa: IsisTiLfa | UndefinedType = Undefined, l3_edge: L3Edge | UndefinedType = Undefined, l3_interface_profiles: L3InterfaceProfiles | UndefinedType = Undefined, + load_interval_default: int | None | UndefinedType = Undefined, local_users: LocalUsers | UndefinedType = Undefined, mac_address_table: MacAddressTable | UndefinedType = Undefined, management_eapi: ManagementEapi | UndefinedType = Undefined, @@ -56534,6 +56552,7 @@ def __init__( ptp_profiles: PtpProfiles | UndefinedType = Undefined, ptp_settings: PtpSettings | UndefinedType = Undefined, queue_monitor_length: QueueMonitorLength | UndefinedType = Undefined, + queue_monitor_streaming: QueueMonitorStreaming | UndefinedType = Undefined, redundancy: Redundancy | UndefinedType = Undefined, router_id_loopback_description: str | UndefinedType = Undefined, serial_number: str | None | UndefinedType = Undefined, @@ -56572,6 +56591,7 @@ def __init__( underlay_routing_protocol: Literal["ebgp", "ospf", "ospf-ldp", "isis", "isis-sr", "isis-ldp", "isis-sr-ldp", "none"] | None | UndefinedType = Undefined, + unsupported_transceiver: UnsupportedTransceiver | UndefinedType = Undefined, uplink_ptp: UplinkPtp | UndefinedType = Undefined, use_cv_topology: bool | None | UndefinedType = Undefined, use_router_general_for_router_id: bool | UndefinedType = Undefined, @@ -57001,6 +57021,7 @@ def __init__( flexible tool that can be used to apply self-healing actions, customize the system behavior, and implement workarounds to problems discovered in the field. + event_monitor: event_monitor evpn_ebgp_gateway_inter_domain: evpn_ebgp_gateway_inter_domain evpn_ebgp_gateway_multihop: Default of 15, considering a large value to avoid BGP reachability issues in very complex DCI @@ -57158,6 +57179,7 @@ def __init__( Subclass of AvdIndexedList with `L3InterfaceProfilesItem` items. Primary key is `profile` (`str`). + load_interval_default: load_interval_default local_users: local_users mac_address_table: MAC address-table aging time. @@ -57535,6 +57557,7 @@ def __init__( Subclass of AvdModel. queue_monitor_length: Subclass of AvdModel. + queue_monitor_streaming: Subclass of AvdModel. redundancy: Redundancy for chassis platforms with dual supervisors | Optional. @@ -57760,6 +57783,7 @@ def __init__( - The variables should be applied to all devices in the fabric. *Only supported with core_interfaces data model. + unsupported_transceiver: Subclass of AvdModel. uplink_ptp: Enable PTP on all infrastructure links. diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml index e3c1288dc12..5f303d18e54 100644 --- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml +++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml @@ -1186,6 +1186,8 @@ keys: documentation_options: table: management-settings type: list + event_monitor: + type: bool evpn_ebgp_gateway_inter_domain: documentation_options: table: evpn-settings @@ -2042,6 +2044,10 @@ keys: type: str description: L3 interface profile name. Any variable supported under `l3_interfaces` can be inherited from a profile. + load_interval_default: + type: int + convert_types: + - str local_users: documentation_options: table: management-settings @@ -3647,6 +3653,9 @@ keys: `platform_settings.[].feature_support.queue_monitor_length_notify` setting. ' + queue_monitor_streaming: + type: dict + $ref: eos_cli_config_gen#/keys/queue_monitor_streaming redundancy: documentation_options: table: system-settings @@ -4542,6 +4551,9 @@ keys: - isis-ldp - isis-sr-ldp - none + unsupported_transceiver: + type: dict + $ref: eos_cli_config_gen#/keys/service_unsupported_transceiver uplink_ptp: documentation_options: table: fabric-settings diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/event_monitor.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/event_monitor.schema.yml new file mode 100644 index 00000000000..3a46bf35bdc --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/event_monitor.schema.yml @@ -0,0 +1,10 @@ +# Copyright (c) 2023-2024 Arista Networks, Inc. +# Use of this source code is governed by the Apache License 2.0 +# that can be found in the LICENSE file. +# yaml-language-server: $schema=../../../_schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + event_monitor: + type: bool diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/load_interval_default.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/load_interval_default.schema.yml new file mode 100644 index 00000000000..4b3758192a7 --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/load_interval_default.schema.yml @@ -0,0 +1,12 @@ +# Copyright (c) 2023-2024 Arista Networks, Inc. +# Use of this source code is governed by the Apache License 2.0 +# that can be found in the LICENSE file. +# yaml-language-server: $schema=../../../_schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + load_interval_default: + type: int + convert_types: + - str diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/queue_monitor_streaming.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/queue_monitor_streaming.schema.yml new file mode 100644 index 00000000000..eb59c72da4e --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/queue_monitor_streaming.schema.yml @@ -0,0 +1,11 @@ +# Copyright (c) 2023-2024 Arista Networks, Inc. +# Use of this source code is governed by the Apache License 2.0 +# that can be found in the LICENSE file. +# yaml-language-server: $schema=../../../_schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + queue_monitor_streaming: + type: dict + $ref: "eos_cli_config_gen#/keys/queue_monitor_streaming" diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/unsupported_transceiver.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/unsupported_transceiver.schema.yml new file mode 100644 index 00000000000..0c53710cd4c --- /dev/null +++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/unsupported_transceiver.schema.yml @@ -0,0 +1,11 @@ +# Copyright (c) 2023-2024 Arista Networks, Inc. +# Use of this source code is governed by the Apache License 2.0 +# that can be found in the LICENSE file. +# yaml-language-server: $schema=../../../_schema/avd_meta_schema.json +# Line above is used by RedHat's YAML Schema vscode extension +# Use Ctrl + Space to get suggestions for every field. Autocomplete will pop up after typing 2 letters. +type: dict +keys: + unsupported_transceiver: + type: dict + $ref: "eos_cli_config_gen#/keys/service_unsupported_transceiver" diff --git a/python-avd/pyavd/_eos_designs/structured_config/base/__init__.py b/python-avd/pyavd/_eos_designs/structured_config/base/__init__.py index 296cb9787d3..f13479dd4e8 100644 --- a/python-avd/pyavd/_eos_designs/structured_config/base/__init__.py +++ b/python-avd/pyavd/_eos_designs/structured_config/base/__init__.py @@ -339,9 +339,9 @@ def transceiver_qsfp_default_mode_4x10(self) -> bool: @cached_property def event_monitor(self) -> dict | None: - """event_monitor set based on event_monitor data-model. TODO: add to schema.""" + """event_monitor set based on event_monitor data-model.""" if get(self._hostvars, "event_monitor") is True: - return {"enabled": "true"} + return {"enabled": True} return None @cached_property @@ -351,7 +351,7 @@ def event_handlers(self) -> list | None: @cached_property def load_interval(self) -> dict | None: - """load_interval set based on load_interval_default variable. TODO: add to schema.""" + """load_interval set based on load_interval_default variable.""" if (load_interval_default := get(self._hostvars, "load_interval_default")) is not None: return {"default": load_interval_default} return None @@ -426,7 +426,7 @@ def spanning_tree(self) -> dict | None: @cached_property def service_unsupported_transceiver(self) -> dict | None: - """service_unsupported_transceiver based on unsupported_transceiver data-model. TODO: Add to schema - maybe as hidden.""" + """service_unsupported_transceiver based on unsupported_transceiver data-model.""" if (unsupported_transceiver := get(self._hostvars, "unsupported_transceiver")) is not None: return {"license_name": unsupported_transceiver.get("license_name"), "license_key": unsupported_transceiver.get("license_key")} @@ -540,20 +540,8 @@ def mac_address_table(self) -> dict | None: @cached_property def queue_monitor_streaming(self) -> dict | None: - """queue_monitor_streaming set based on queue_monitor_streaming data-model. TODO: Add to schema.""" - enable = get(self._hostvars, "queue_monitor_streaming.enable") - vrf = get(self._hostvars, "queue_monitor_streaming.vrf") - if enable is not True or vrf is None: - # TODO: Fix bug where queue monitor enable without VRF will not return any config. - return None - - queue_monitor = {} - if enable is True: - queue_monitor["enable"] = enable - - queue_monitor["vrf"] = vrf - - return queue_monitor + """queue_monitor_streaming set based on queue_monitor_streaming data-model.""" + return get(self._hostvars, "queue_monitor_streaming") @cached_property def management_api_http(self) -> dict: