Ansible git move
[csit.git] / fdio.infra.ansible / roles / performance_tuning / filter_plugins / main.py
1 """Extra Ansible filters"""
2
3 def irqbalance_banned_cpu_mask(
4         processor_cores, processor_count, processor_threads_per_core):
5     """
6     Return irqbalance CPU mask.
7     Args:
8         processor_cores (int): Physical processor unit.
9         processor_counts (int): Processors per physical unit.
10         processor_threads_per_core (int): Threads per physical unit.
11     Returns:
12        str: irqbalance_banned_cpus.
13     """
14     mask = int("1" * 128, 2)
15
16     for i in range(processor_count * processor_threads_per_core):
17         mask &= ~(1 << i * processor_cores)
18
19     import re
20     return ",".join(re.findall('.{1,8}', str(hex(mask))[2:]))
21
22
23 class FilterModule(object):
24     """Return filter plugin"""
25
26     @staticmethod
27     def filters():
28         """Return filter"""
29         return {'irqbalance_banned_cpu_mask': irqbalance_banned_cpu_mask}