Skip to content

Commit

Permalink
qos: T6638: require interface state existence in verify conditional
Browse files Browse the repository at this point in the history
  • Loading branch information
jestabro committed Aug 8, 2024
1 parent 7b9d5f0 commit ed63c9d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
13 changes: 7 additions & 6 deletions python/vyos/configverify.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion src/conf_mode/qos.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ed63c9d

Please sign in to comment.