/usr/lib/python3.9/site-packages/tuned/profiles
NameSizeModeActions
functions/-0755rm
__pycache__/-0755rm
exceptions.py950644editdlrm
factory.py1410644editdlrm
loader.py41050644editdlrm
locator.py37840644editdlrm
merger.py28210644editdlrm
profile.py12610644editdlrm
unit.py28270644editdlrm
variables.py23320644editdlrm
__init__.py2810644editdlrm
Edit: /usr/lib/python3.9/site-packages/tuned/profiles/merger.py (2821B)
import tuned.consts as consts from functools import reduce from tuned.profiles.profile import Profile class Merger(object): """ Tool for merging multiple profiles into one. """ def __init__(self): pass def merge(self, configs): """ Merge multiple configurations into one. If there are multiple units of the same type, option 'devices' is set for each unit with respect to eliminating any duplicate devices. """ merged_config = reduce(self._merge_two, configs, Profile()) return merged_config def _merge_two(self, profile_a, profile_b): """ Merge two profiles. The configuration of units with matching names are updated with options from the newer profile. If the 'replace' options of the newer unit is 'True', all options from the older unit are dropped. """ if profile_a.name is None: profile_a.name = profile_b.name profile_a.options.update(profile_b.options) for unit_name, unit in list(profile_b.units.items()): if unit.type == consts.PLUGIN_VARIABLES_UNIT_NAME: if unit.replace: profile_a.variables.clear() overwritten_variables = set(profile_a.variables.keys()) & set(unit.options.keys()) profile_a.variables.update(unit.options) if unit.prepend: for variable in reversed(unit.options): if variable not in overwritten_variables: profile_a.variables.move_to_end(variable, last=False) elif unit.replace or unit_name not in profile_a.units: profile_a.units[unit_name] = unit else: profile_a.units[unit_name].type = unit.type profile_a.units[unit_name].enabled = unit.enabled profile_a.units[unit_name].devices = unit.devices if unit.priority is not None: profile_a.units[unit_name].priority = unit.priority if unit.devices_udev_regex is not None: profile_a.units[unit_name].devices_udev_regex = unit.devices_udev_regex if unit.cpuinfo_regex is not None: profile_a.units[unit_name].cpuinfo_regex = unit.cpuinfo_regex if unit.uname_regex is not None: profile_a.units[unit_name].uname_regex = unit.uname_regex if unit.script_pre is not None: profile_a.units[unit_name].script_pre = unit.script_pre if unit.script_post is not None: profile_a.units[unit_name].script_post = unit.script_post if unit.drop is not None: for option in unit.drop: profile_a.units[unit_name].options.pop(option, None) unit.drop = None if unit_name == "script" and profile_a.units[unit_name].options.get("script", None) is not None: script = profile_a.units[unit_name].options.get("script", None) profile_a.units[unit_name].options.update(unit.options) profile_a.units[unit_name].options["script"] = script + profile_a.units[unit_name].options["script"] else: profile_a.units[unit_name].options.update(unit.options) return profile_a