summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2024-08-08 11:24:00 -0500
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2024-08-09 08:43:36 +0000
commitd9c9c48a0993524fa6443e317e5046e0e01d7641 (patch)
tree2dfddec7aefb1245c15588d03031b92bae8f7469
parentc0ce26f995e48e29050791a6adb4bc09a2630201 (diff)
downloadvyos-1x-d9c9c48a0993524fa6443e317e5046e0e01d7641.tar.gz
vyos-1x-d9c9c48a0993524fa6443e317e5046e0e01d7641.zip
qos: T6638: require interface state existence in verify conditionalmergify/bp/circinus/pr-3960
(cherry picked from commit ed63c9d1896a218715e13e1799fc059f4561f75e)
-rw-r--r--python/vyos/configverify.py13
-rwxr-xr-xsrc/conf_mode/qos.py2
2 files changed, 8 insertions, 7 deletions
diff --git a/python/vyos/configverify.py b/python/vyos/configverify.py
index 4cb84194a..b49d66c36 100644
--- a/python/vyos/configverify.py
+++ b/python/vyos/configverify.py
@@ -237,7 +237,7 @@ def verify_bridge_delete(config):
raise ConfigError(f'Interface "{interface}" cannot be deleted as it '
f'is a member of bridge "{bridge_name}"!')
-def verify_interface_exists(ifname, warning_only=False):
+def verify_interface_exists(ifname, state_required=False, warning_only=False):
"""
Common helper function used by interface implementations to perform
recurring validation if an interface actually exists. We first probe
@@ -249,11 +249,12 @@ def verify_interface_exists(ifname, warning_only=False):
from vyos.utils.dict import dict_search_recursive
from vyos.utils.network import interface_exists
- # Check if interface is present in CLI config
- config = ConfigTreeQuery()
- tmp = config.get_config_dict(['interfaces'], get_first_key=True)
- if bool(list(dict_search_recursive(tmp, ifname))):
- return True
+ if not state_required:
+ # Check if interface is present in CLI config
+ config = ConfigTreeQuery()
+ tmp = config.get_config_dict(['interfaces'], get_first_key=True)
+ if bool(list(dict_search_recursive(tmp, ifname))):
+ return True
# Interface not found on CLI, try Linux Kernel
if interface_exists(ifname):
diff --git a/src/conf_mode/qos.py b/src/conf_mode/qos.py
index 45248fb4a..464d7c192 100755
--- a/src/conf_mode/qos.py
+++ b/src/conf_mode/qos.py
@@ -303,7 +303,7 @@ def apply(qos):
return None
for interface, interface_config in qos['interface'].items():
- if not verify_interface_exists(interface, warning_only=True):
+ if not verify_interface_exists(interface, state_required=True, warning_only=True):
# When shaper is bound to a dialup (e.g. PPPoE) interface it is
# possible that it is yet not availbale when to QoS code runs.
# Skip the configuration and inform the user via warning_only=True