Skip to content

Commit

Permalink
policymanager: update get_iface_default
Browse files Browse the repository at this point in the history
This update is meant to check if there is a driver default policy
in between ifname and default policies.
  • Loading branch information
sohorx committed May 25, 2022
1 parent e841047 commit 64aeef5
Showing 1 changed file with 22 additions and 23 deletions.
45 changes: 22 additions & 23 deletions ifupdown2/ifupdown/policymanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,37 +118,36 @@ def get_iface_default(self,module_name=None,ifname=None,attr=None):
# make sure we have an index
if (not ifname or not attr or not module_name):
return None
driname = self._get_driver_name(ifname)

val = None
# users can specify defaults to override the systemwide settings
# look for user specific interface attribute iface_defaults first
try:
# looks for user specified value
val = self.user_policy_array[module_name]['iface_defaults'][ifname][attr]
return val
except (TypeError, KeyError, IndexError):
pass
try:
with suppress(TypeError, KeyError, IndexError):
# looks for user interface name specified value
return self.user_policy_array[module_name]['iface_defaults'][ifname][attr]

with suppress(TypeError, KeyError, IndexError):
# failing that, there may be a user driver default specified value
return self.user_policy_array[module_name]['driver_defaults'][driname][attr]

with suppress(TypeError, KeyError, IndexError):
# failing that, there may be a user default for all intefaces
val = self.user_policy_array[module_name]['defaults'][attr]
return val
except (TypeError, KeyError, IndexError):
pass
try:
return self.user_policy_array[module_name]['defaults'][attr]

with suppress(TypeError, KeyError, IndexError):
# failing that, look for system setting for the interface
val = self.system_policy_array[module_name]['iface_defaults'][ifname][attr]
return val
except (TypeError, KeyError, IndexError):
pass
try:
return self.system_policy_array[module_name]['iface_defaults'][ifname][attr]

with suppress(TypeError, KeyError, IndexError):
# failing that, look for system setting for the driver
return self.system_policy_array[module_name]['driver_defaults'][driname][attr]

with suppress(TypeError, KeyError, IndexError):
# failing that, look for system setting for all interfaces
val = self.system_policy_array[module_name]['defaults'][attr]
return val
except (TypeError, KeyError, IndexError):
pass
return self.system_policy_array[module_name]['defaults'][attr]

# could not find any system or user default so return Non
return val
return None

def _get_driver_name(self, ifname):
''' get_driver_name: get the driver name from an interface name '''
Expand Down

0 comments on commit 64aeef5

Please sign in to comment.