Ansible git move
[csit.git] / fdio.infra.ansible / roles / performance_tuning / filter_plugins / main.py
diff --git a/fdio.infra.ansible/roles/performance_tuning/filter_plugins/main.py b/fdio.infra.ansible/roles/performance_tuning/filter_plugins/main.py
new file mode 100644 (file)
index 0000000..d76f6fe
--- /dev/null
@@ -0,0 +1,29 @@
+"""Extra Ansible filters"""
+
+def irqbalance_banned_cpu_mask(
+        processor_cores, processor_count, processor_threads_per_core):
+    """
+    Return irqbalance CPU mask.
+    Args:
+        processor_cores (int): Physical processor unit.
+        processor_counts (int): Processors per physical unit.
+        processor_threads_per_core (int): Threads per physical unit.
+    Returns:
+       str: irqbalance_banned_cpus.
+    """
+    mask = int("1" * 128, 2)
+
+    for i in range(processor_count * processor_threads_per_core):
+        mask &= ~(1 << i * processor_cores)
+
+    import re
+    return ",".join(re.findall('.{1,8}', str(hex(mask))[2:]))
+
+
+class FilterModule(object):
+    """Return filter plugin"""
+
+    @staticmethod
+    def filters():
+        """Return filter"""
+        return {'irqbalance_banned_cpu_mask': irqbalance_banned_cpu_mask}