1
0
Fork 0

Add log message for unsupported parameters in plugin_net

- Resolves: rhbz#1533852
This commit is contained in:
Tomas Korbar 2018-11-20 16:54:59 +01:00
parent f918d97cda
commit 0d28f9e63e

View file

@ -313,6 +313,29 @@ class NetTuningPlugin(base.Plugin):
l = [x for x in [re.split(r":\s*", x) for x in l] if len(x) == 2]
return dict(l)
def _check_device_support(self, context, parameters, device, dev_params):
"""Filter unsupported parameters and log warnings about it
Positional parameters:
context -- context of change
parameters -- parameters to change
device -- name of device on which should be parameters set
dev_params -- dictionary of currently known parameters of device
"""
supported_parameters = set(dev_params.keys())
parameters_to_change = set(parameters.keys())
# if parameters_to_change contains unsupported parameter(s) then remove
# it/them
unsupported_parameters = (parameters_to_change
- supported_parameters)
for param in unsupported_parameters:
log.warning("%s parameter %s is not supported by device %s" % (
context,
param,
device,
))
parameters.pop(param, None)
def _get_device_parameters(self, context, device):
context2opt = { "coalesce": "-c", "features": "-k", "pause": "-a", "ring": "-g" }
opt = context2opt[context]
@ -329,13 +352,18 @@ class NetTuningPlugin(base.Plugin):
return None
return d
def _set_device_parameters(self, context, value, device, sim):
def _set_device_parameters(self, context, value, device, sim,
dev_params = None):
if value is None or len(value) == 0:
return None
d = self._parse_config_parameters(value, context)
if d is None or not self._check_parameters(context, d):
return None
if not sim:
return {}
# check if device supports parameters and filter out unsupported ones
if dev_params:
self._check_device_support(context, d, device, dev_params)
if not sim and len(d) != 0:
log.debug("setting %s: %s" % (context, str(d)))
context2opt = { "coalesce": "-C", "features": "-K", "pause": "-A", "ring": "-G" }
opt = context2opt[context]
@ -349,20 +377,19 @@ class NetTuningPlugin(base.Plugin):
device_name = device)
if start:
cd = self._get_device_parameters(context, device)
d = self._set_device_parameters(context, value, device, verify)
# backup only parameters which are changed
sd = dict([k_v for k_v in list(cd.items()) if k_v[0] in d])
if len(d) != len(sd):
log.error("unable to save previous %s, wanted to save: '%s', but read: '%s'" % \
(context, str(list(d.keys())), str(list(cd.items()))))
d = self._set_device_parameters(context, value, device, verify,
dev_params = cd)
# if none of parameters passed checks then the command completely
# failed
if len(d) == 0:
return False
if verify:
return self._cmd.dict2list(d) == self._cmd.dict2list(sd)
self._storage.set(storage_key," ".join(self._cmd.dict2list(sd)))
# saved are only those parameters which passed checks
self._storage.set(storage_key," ".join(self._cmd.dict2list(d)))
else:
if not verify:
original_value = self._storage.get(storage_key)
self._set_device_parameters(context, original_value, device, False)
original_value = self._storage.get(storage_key)
# in storage are only those parameters which were already tested
# so skip check for supported parameters
self._set_device_parameters(context, original_value, device, False)
return None
@command_custom("features", per_device = True)