From: Luis Chamberlain <mcgrof@kernel.org>
To: Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
kdevops@lists.linux.dev
Cc: Luis Chamberlain <mcgrof@kernel.org>
Subject: [PATCH 1/2] gen_hosts: refactor monolithic hosts.j2 template into per-workflow templates
Date: Fri, 29 Aug 2025 03:56:44 -0700 [thread overview]
Message-ID: <20250829105645.1289069-2-mcgrof@kernel.org> (raw)
In-Reply-To: <20250829105645.1289069-1-mcgrof@kernel.org>
The hosts.j2 template had become unwieldy spaghetti code with all workflows
mixed together in a single file, making it difficult to read, maintain, and
extend. This was particularly problematic when attempting to add new features.
This refactoring:
- Splits the monolithic hosts.j2 into individual workflow templates under
playbooks/roles/gen_hosts/templates/workflows/
- Creates dedicated templates for each workflow (fstests, blktests, selftests,
mmtests, sysbench, ai, fio-tests, etc.)
- Converts the main hosts.j2 to use Jinja2 includes for cleaner organization
- Maintains exact same functionality with improved maintainability
- Removes workflow-specific template overrides from all workflow Makefiles
as they now all use the unified hosts.j2 template
Benefits:
- Each workflow template is now self-contained and easy to understand
- Adding new workflows no longer requires navigating through hundreds of
lines of unrelated configuration
- Template logic is easier to debug and test
- All workflows now use a consistent template system
This is a pure refactoring with no functional changes. The generated hosts
files remain identical to the previous implementation.
Generated-by: Claude AI
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
playbooks/roles/gen_hosts/templates/hosts.j2 | 264 +++---------------
.../roles/gen_hosts/templates/workflows/ai.j2 | 99 +++++++
.../gen_hosts/templates/workflows/blktests.j2 | 58 ++++
.../gen_hosts/templates/workflows/cxl.j2 | 7 +
.../gen_hosts/templates/workflows/default.j2 | 62 ++++
.../templates/workflows/fio-tests.j2 | 38 +++
.../gen_hosts/templates/workflows/fstests.j2 | 72 +++++
.../gen_hosts/templates/workflows/gitr.j2 | 41 +++
.../gen_hosts/templates/workflows/ltp.j2 | 41 +++
.../gen_hosts/templates/workflows/mmtests.j2 | 77 +++++
.../gen_hosts/templates/workflows/nfstest.j2 | 41 +++
.../gen_hosts/templates/workflows/pynfs.j2 | 7 +
.../templates/workflows/reboot-limit.j2 | 33 +++
.../templates/workflows/selftests.j2 | 53 ++++
.../gen_hosts/templates/workflows/sysbench.j2 | 53 ++++
workflows/ai/Makefile | 3 +-
workflows/blktests/Makefile | 3 +-
workflows/cxl/Makefile | 3 +-
workflows/fio-tests/Makefile | 3 +-
workflows/fstests/Makefile | 3 +-
workflows/gitr/Makefile | 3 +-
workflows/linux/Makefile | 3 +-
workflows/ltp/Makefile | 3 +-
workflows/mmtests/Makefile | 3 +-
workflows/nfstest/Makefile | 3 +-
workflows/pynfs/Makefile | 3 +-
workflows/selftests/Makefile | 3 +-
workflows/sysbench/Makefile | 3 +-
28 files changed, 741 insertions(+), 244 deletions(-)
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/ai.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/blktests.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/cxl.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/default.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/fio-tests.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/fstests.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/gitr.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/ltp.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/mmtests.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/nfstest.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/pynfs.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/reboot-limit.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/selftests.j2
create mode 100644 playbooks/roles/gen_hosts/templates/workflows/sysbench.j2
diff --git a/playbooks/roles/gen_hosts/templates/hosts.j2 b/playbooks/roles/gen_hosts/templates/hosts.j2
index 0e896481..2f2f5d41 100644
--- a/playbooks/roles/gen_hosts/templates/hosts.j2
+++ b/playbooks/roles/gen_hosts/templates/hosts.j2
@@ -5,242 +5,44 @@ proper identation. We don't need identation for the ansible hosts file.
Each workflow which has its own custom ansible host file generated should use
its own jinja2 template file and define its own ansible task for its generation.
#}
-{% if kdevops_workflows_dedicated_workflow %}
+{% if kdevops_declared_hosts is defined and kdevops_declared_hosts %}
+{# Use declared hosts that skip bringup process - for bare metal or pre-existing infrastructure #}
+{% include 'workflows/declared-hosts.j2' %}
+{% elif kdevops_workflows_dedicated_workflow %}
+{# Include workflow-specific template based on enabled workflow. Each workflow has its own
+ template file under workflows/ directory for better maintainability and modularity #}
{% if workflows_reboot_limit %}
-[all]
-localhost ansible_connection=local
-{{ kdevops_host_prefix }}-reboot-limit
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-reboot-limit-dev
-{% endif %}
-
-[all:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-[baseline]
-{{ kdevops_host_prefix }}-reboot-limit
-
-[baseline:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% if kdevops_baseline_and_dev %}
-[dev]
-{{ kdevops_host_prefix }}-reboot-limit-dev
-
-[dev:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% endif %}
-[reboot-limit]
-{{ kdevops_host_prefix }}-reboot-limit
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-reboot-limit-dev
-{% endif %}
-
-[reboot-limit:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+{% include 'workflows/reboot-limit.j2' %}
{% elif kdevops_workflow_enable_fio_tests %}
-[all]
-localhost ansible_connection=local
-{{ kdevops_host_prefix }}-fio-tests
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-fio-tests-dev
-{% endif %}
-
-[all:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-[baseline]
-{{ kdevops_host_prefix }}-fio-tests
-
-[baseline:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% if kdevops_baseline_and_dev %}
-[dev]
-{{ kdevops_host_prefix }}-fio-tests-dev
-
-[dev:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% endif %}
-[fio_tests]
-{{ kdevops_host_prefix }}-fio-tests
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-fio-tests-dev
-{% endif %}
-
-[fio_tests:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-[service]
-
-[service:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% elif kdevops_workflow_enable_ai %}
-{% if ai_enable_multifs_testing|default(false)|bool %}
-{# Multi-filesystem section-based hosts #}
-[all]
-localhost ansible_connection=local
-{% for node in all_generic_nodes %}
-{{ node }}
-{% endfor %}
-
-[all:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-[baseline]
-{% for node in all_generic_nodes %}
-{% if not node.endswith('-dev') %}
-{{ node }}
-{% endif %}
-{% endfor %}
-
-[baseline:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% if kdevops_baseline_and_dev %}
-[dev]
-{% for node in all_generic_nodes %}
-{% if node.endswith('-dev') %}
-{{ node }}
-{% endif %}
-{% endfor %}
-
-[dev:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% endif %}
-[ai]
-{% for node in all_generic_nodes %}
-{{ node }}
-{% endfor %}
-
-[ai:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{# Individual section groups for multi-filesystem testing #}
-{% set section_names = [] %}
-{% for node in all_generic_nodes %}
-{% if not node.endswith('-dev') %}
-{% set section = node.replace(kdevops_host_prefix + '-ai-', '') %}
-{% if section != kdevops_host_prefix + '-ai' %}
-{% if section_names.append(section) %}{% endif %}
-{% endif %}
-{% endif %}
-{% endfor %}
-
-{% for section in section_names %}
-[ai_{{ section | replace('-', '_') }}]
-{{ kdevops_host_prefix }}-ai-{{ section }}
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-ai-{{ section }}-dev
-{% endif %}
-
-[ai_{{ section | replace('-', '_') }}:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% endfor %}
-{% else %}
-{# Single filesystem hosts (original behavior) #}
-[all]
-localhost ansible_connection=local
-{{ kdevops_host_prefix }}-ai
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-ai-dev
-{% endif %}
-
-[all:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-[baseline]
-{{ kdevops_host_prefix }}-ai
-
-[baseline:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% if kdevops_baseline_and_dev %}
-[dev]
-{{ kdevops_host_prefix }}-ai-dev
-
-[dev:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-
-{% endif %}
-[ai]
-{{ kdevops_host_prefix }}-ai
-{% if kdevops_baseline_and_dev %}
-{{ kdevops_host_prefix }}-ai-dev
-{% endif %}
-
-[ai:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% endif %}
+{% include 'workflows/fio-tests.j2' %}
+{% elif kdevops_workflow_enable_fstests %}
+{% include 'workflows/fstests.j2' %}
+{% elif kdevops_workflow_enable_blktests %}
+{% include 'workflows/blktests.j2' %}
+{% elif kdevops_workflow_enable_selftests %}
+{% include 'workflows/selftests.j2' %}
+{% elif kdevops_workflow_enable_mmtests %}
+{% include 'workflows/mmtests.j2' %}
+{% elif kdevops_workflow_enable_sysbench %}
+{% include 'workflows/sysbench.j2' %}
+{% elif kdevops_workflow_enable_cxl %}
+{% include 'workflows/cxl.j2' %}
+{% elif kdevops_workflow_enable_pynfs %}
+{% include 'workflows/pynfs.j2' %}
+{% elif kdevops_workflow_enable_gitr %}
+{% include 'workflows/gitr.j2' %}
+{% elif kdevops_workflow_enable_ltp %}
+{% include 'workflows/ltp.j2' %}
+{% elif kdevops_workflow_enable_nfstest %}
+{% include 'workflows/nfstest.j2' %}
+{% elif kdevops_workflow_enable_ai|default(false)|bool %}
+{% include 'workflows/ai.j2' %}
{% else %}
[all]
localhost ansible_connection=local
write-your-own-template-for-your-workflow-and-task
{% endif %}
{% else %}
-[all]
-localhost ansible_connection=local
-{% if kdevops_enable_nixos|default(false) %}
-{{ kdevops_host_prefix }} ansible_python_interpreter=/run/current-system/sw/bin/python3
-{% else %}
-{{ kdevops_host_prefix }}
-{% endif %}
-{% if kdevops_baseline_and_dev == True %}
-{% if kdevops_enable_nixos|default(false) %}
-{{ kdevops_host_prefix }}-dev ansible_python_interpreter=/run/current-system/sw/bin/python3
-{% else %}
-{{ kdevops_host_prefix }}-dev
-{% endif %}
-{% endif %}
-{% if kdevops_enable_iscsi %}
-{{ kdevops_host_prefix }}-iscsi
-{% endif %}
-{% if kdevops_nfsd_enable %}
-{{ kdevops_host_prefix }}-nfsd
-{% endif %}
-[all:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-[baseline]
-{% if kdevops_enable_nixos|default(false) %}
-{{ kdevops_host_prefix }} ansible_python_interpreter=/run/current-system/sw/bin/python3
-{% else %}
-{{ kdevops_host_prefix }}
-{% endif %}
-[baseline:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-[dev]
-{% if kdevops_baseline_and_dev %}
-{% if kdevops_enable_nixos|default(false) %}
-{{ kdevops_host_prefix }}-dev ansible_python_interpreter=/run/current-system/sw/bin/python3
-{% else %}
-{{ kdevops_host_prefix }}-dev
-{% endif %}
-{% endif %}
-[dev:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% if kdevops_enable_iscsi %}
-[iscsi]
-{{ kdevops_host_prefix }}-iscsi
-[iscsi:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% endif %}
-{% if kdevops_nfsd_enable %}
-[nfsd]
-{{ kdevops_host_prefix }}-nfsd
-[nfsd:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% endif %}
-[service]
-{% if kdevops_enable_iscsi %}
-{{ kdevops_host_prefix }}-iscsi
-{% endif %}
-{% if kdevops_nfsd_enable %}
-{{ kdevops_host_prefix }}-nfsd
-{% endif %}
-[service:vars]
-ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
-{% endif %}
+{# Default non-workflow template #}
+{% include 'workflows/default.j2' %}
+{% endif %}
\ No newline at end of file
diff --git a/playbooks/roles/gen_hosts/templates/workflows/ai.j2 b/playbooks/roles/gen_hosts/templates/workflows/ai.j2
new file mode 100644
index 00000000..d0914436
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/ai.j2
@@ -0,0 +1,99 @@
+{# Workflow template for AI #}
+{% if ai_enable_multifs_testing|default(false)|bool %}
+{# Multi-filesystem section-based hosts #}
+[all]
+localhost ansible_connection=local
+{% for node in all_generic_nodes %}
+{{ node }}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for node in all_generic_nodes %}
+{% if not node.endswith('-dev') %}
+{{ node }}
+{% endif %}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for node in all_generic_nodes %}
+{% if node.endswith('-dev') %}
+{{ node }}
+{% endif %}
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[ai]
+{% for node in all_generic_nodes %}
+{{ node }}
+{% endfor %}
+
+[ai:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{# Individual section groups for multi-filesystem testing #}
+{% set section_names = [] %}
+{% for node in all_generic_nodes %}
+{% if not node.endswith('-dev') %}
+{% set section = node.replace(kdevops_host_prefix + '-ai-', '') %}
+{% if section != kdevops_host_prefix + '-ai' %}
+{% if section_names.append(section) %}{% endif %}
+{% endif %}
+{% endif %}
+{% endfor %}
+
+{% for section in section_names %}
+[ai_{{ section | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-ai-{{ section }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-ai-{{ section }}-dev
+{% endif %}
+
+[ai_{{ section | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
+{% else %}
+{# Single filesystem hosts (original behavior) #}
+[all]
+localhost ansible_connection=local
+{{ kdevops_host_prefix }}-ai
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-ai-dev
+{% endif %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{{ kdevops_host_prefix }}-ai
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{{ kdevops_host_prefix }}-ai-dev
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[ai]
+{{ kdevops_host_prefix }}-ai
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-ai-dev
+{% endif %}
+
+[ai:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+{% endif %}
diff --git a/playbooks/roles/gen_hosts/templates/workflows/blktests.j2 b/playbooks/roles/gen_hosts/templates/workflows/blktests.j2
new file mode 100644
index 00000000..eea3eef3
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/blktests.j2
@@ -0,0 +1,58 @@
+{# Workflow template for blktests #}
+[all]
+localhost ansible_connection=local
+{% for test_type in blktests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for test_type in blktests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for test_type in blktests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[blktests]
+{% for test_type in blktests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+
+[blktests:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% for test_type in blktests_enabled_test_types %}
+[blktests_{{ test_type | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+
+[blktests_{{ test_type | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
+
+[service]
+
+[service:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/cxl.j2 b/playbooks/roles/gen_hosts/templates/workflows/cxl.j2
new file mode 100644
index 00000000..53790f29
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/cxl.j2
@@ -0,0 +1,7 @@
+{# Workflow template for CXL #}
+[all]
+localhost ansible_connection=local
+write-your-own-template-for-cxl-workflow
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/default.j2 b/playbooks/roles/gen_hosts/templates/workflows/default.j2
new file mode 100644
index 00000000..86619309
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/default.j2
@@ -0,0 +1,62 @@
+{# Default template for non-workflow setups #}
+[all]
+localhost ansible_connection=local
+{% if kdevops_enable_nixos|default(false) %}
+{{ kdevops_host_prefix }} ansible_python_interpreter=/run/current-system/sw/bin/python3
+{% else %}
+{{ kdevops_host_prefix }}
+{% endif %}
+{% if kdevops_baseline_and_dev == True %}
+{% if kdevops_enable_nixos|default(false) %}
+{{ kdevops_host_prefix }}-dev ansible_python_interpreter=/run/current-system/sw/bin/python3
+{% else %}
+{{ kdevops_host_prefix }}-dev
+{% endif %}
+{% endif %}
+{% if kdevops_enable_iscsi %}
+{{ kdevops_host_prefix }}-iscsi
+{% endif %}
+{% if kdevops_nfsd_enable %}
+{{ kdevops_host_prefix }}-nfsd
+{% endif %}
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+[baseline]
+{% if kdevops_enable_nixos|default(false) %}
+{{ kdevops_host_prefix }} ansible_python_interpreter=/run/current-system/sw/bin/python3
+{% else %}
+{{ kdevops_host_prefix }}
+{% endif %}
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+[dev]
+{% if kdevops_baseline_and_dev %}
+{% if kdevops_enable_nixos|default(false) %}
+{{ kdevops_host_prefix }}-dev ansible_python_interpreter=/run/current-system/sw/bin/python3
+{% else %}
+{{ kdevops_host_prefix }}-dev
+{% endif %}
+{% endif %}
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+{% if kdevops_enable_iscsi %}
+[iscsi]
+{{ kdevops_host_prefix }}-iscsi
+[iscsi:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+{% endif %}
+{% if kdevops_nfsd_enable %}
+[nfsd]
+{{ kdevops_host_prefix }}-nfsd
+[nfsd:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+{% endif %}
+[service]
+{% if kdevops_enable_iscsi %}
+{{ kdevops_host_prefix }}-iscsi
+{% endif %}
+{% if kdevops_nfsd_enable %}
+{{ kdevops_host_prefix }}-nfsd
+{% endif %}
+[service:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/fio-tests.j2 b/playbooks/roles/gen_hosts/templates/workflows/fio-tests.j2
new file mode 100644
index 00000000..548941a0
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/fio-tests.j2
@@ -0,0 +1,38 @@
+{# Workflow template for fio-tests #}
+[all]
+localhost ansible_connection=local
+{{ kdevops_host_prefix }}-fio-tests
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-fio-tests-dev
+{% endif %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{{ kdevops_host_prefix }}-fio-tests
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{{ kdevops_host_prefix }}-fio-tests-dev
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[fio_tests]
+{{ kdevops_host_prefix }}-fio-tests
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-fio-tests-dev
+{% endif %}
+
+[fio_tests:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[service]
+
+[service:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/fstests.j2 b/playbooks/roles/gen_hosts/templates/workflows/fstests.j2
new file mode 100644
index 00000000..600d125f
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/fstests.j2
@@ -0,0 +1,72 @@
+{# Workflow template for fstests #}
+[all]
+localhost ansible_connection=local
+{% for node_section in fstests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ node_section }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ node_section }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for node_section in fstests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ node_section }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for node_section in fstests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ node_section }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[fstests]
+{% for node_section in fstests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ node_section }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ node_section }}-dev
+{% endif %}
+{% endfor %}
+
+[fstests:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% for section in sections %}
+[fstests_{{ section | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-{{ section }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ section }}-dev
+{% endif %}
+
+[fstests_{{ section | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
+
+[nfsd]
+{% if kdevops_nfsd_enable %}
+{{ kdevops_host_prefix }}-nfsd
+{% endif %}
+
+[nfsd:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[service]
+{% if kdevops_enable_iscsi %}
+{{ kdevops_host_prefix }}-iscsi
+{% endif %}
+{% if kdevops_nfsd_enable %}
+{{ kdevops_host_prefix }}-nfsd
+{% endif %}
+
+[service:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/gitr.j2 b/playbooks/roles/gen_hosts/templates/workflows/gitr.j2
new file mode 100644
index 00000000..86ee9326
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/gitr.j2
@@ -0,0 +1,41 @@
+{# Workflow template for gitr #}
+[all]
+localhost ansible_connection=local
+{% for host in gitr_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for host in gitr_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for host in gitr_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[gitr]
+{% for host in gitr_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[gitr:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/ltp.j2 b/playbooks/roles/gen_hosts/templates/workflows/ltp.j2
new file mode 100644
index 00000000..fb120828
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/ltp.j2
@@ -0,0 +1,41 @@
+{# Workflow template for ltp #}
+[all]
+localhost ansible_connection=local
+{% for host in ltp_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for host in ltp_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for host in ltp_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[ltp]
+{% for host in ltp_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[ltp:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/mmtests.j2 b/playbooks/roles/gen_hosts/templates/workflows/mmtests.j2
new file mode 100644
index 00000000..d796cbe6
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/mmtests.j2
@@ -0,0 +1,77 @@
+{# Workflow template for mmtests #}
+[all]
+localhost ansible_connection=local
+{% if mmtests_enabled_test_types %}
+{% for test_type in mmtests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+{% else %}
+{{ kdevops_host_prefix }}-mmtests
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-mmtests-dev
+{% endif %}
+{% endif %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% if mmtests_enabled_test_types %}
+{% for test_type in mmtests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% endfor %}
+{% else %}
+{{ kdevops_host_prefix }}-mmtests
+{% endif %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% if mmtests_enabled_test_types %}
+{% for test_type in mmtests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endfor %}
+{% else %}
+{{ kdevops_host_prefix }}-mmtests-dev
+{% endif %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[mmtests]
+{% if mmtests_enabled_test_types %}
+{% for test_type in mmtests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+{% else %}
+{{ kdevops_host_prefix }}-mmtests
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-mmtests-dev
+{% endif %}
+{% endif %}
+
+[mmtests:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if mmtests_enabled_test_types %}
+{% for test_type in mmtests_enabled_test_types %}
+[mmtests_{{ test_type | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+
+[mmtests_{{ test_type | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
+{% endif %}
diff --git a/playbooks/roles/gen_hosts/templates/workflows/nfstest.j2 b/playbooks/roles/gen_hosts/templates/workflows/nfstest.j2
new file mode 100644
index 00000000..34aa7dfe
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/nfstest.j2
@@ -0,0 +1,41 @@
+{# Workflow template for nfstest #}
+[all]
+localhost ansible_connection=local
+{% for host in nfstest_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for host in nfstest_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for host in nfstest_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[nfstest]
+{% for host in nfstest_enabled_hosts %}
+{{ kdevops_host_prefix }}-{{ host }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ host }}-dev
+{% endif %}
+{% endfor %}
+
+[nfstest:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/pynfs.j2 b/playbooks/roles/gen_hosts/templates/workflows/pynfs.j2
new file mode 100644
index 00000000..6145b1a0
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/pynfs.j2
@@ -0,0 +1,7 @@
+{# Workflow template for pynfs #}
+[all]
+localhost ansible_connection=local
+write-your-own-template-for-pynfs-workflow
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/reboot-limit.j2 b/playbooks/roles/gen_hosts/templates/workflows/reboot-limit.j2
new file mode 100644
index 00000000..07bd6f80
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/reboot-limit.j2
@@ -0,0 +1,33 @@
+{# Workflow template for reboot-limit #}
+[all]
+localhost ansible_connection=local
+{{ kdevops_host_prefix }}-reboot-limit
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-reboot-limit-dev
+{% endif %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{{ kdevops_host_prefix }}-reboot-limit
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{{ kdevops_host_prefix }}-reboot-limit-dev
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[reboot-limit]
+{{ kdevops_host_prefix }}-reboot-limit
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-reboot-limit-dev
+{% endif %}
+
+[reboot-limit:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
diff --git a/playbooks/roles/gen_hosts/templates/workflows/selftests.j2 b/playbooks/roles/gen_hosts/templates/workflows/selftests.j2
new file mode 100644
index 00000000..4ef598c7
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/selftests.j2
@@ -0,0 +1,53 @@
+{# Workflow template for selftests #}
+[all]
+localhost ansible_connection=local
+{% for test_type in selftests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for test_type in selftests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for test_type in selftests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[selftests]
+{% for test_type in selftests_enabled_test_types %}
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+{% endfor %}
+
+[selftests:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% for test_type in selftests_enabled_test_types %}
+[selftests_{{ test_type | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-{{ test_type }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test_type }}-dev
+{% endif %}
+
+[selftests_{{ test_type | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
diff --git a/playbooks/roles/gen_hosts/templates/workflows/sysbench.j2 b/playbooks/roles/gen_hosts/templates/workflows/sysbench.j2
new file mode 100644
index 00000000..34f22a83
--- /dev/null
+++ b/playbooks/roles/gen_hosts/templates/workflows/sysbench.j2
@@ -0,0 +1,53 @@
+{# Workflow template for sysbench #}
+[all]
+localhost ansible_connection=local
+{% for test in enabled_sysbench_tests %}
+{{ kdevops_host_prefix }}-{{ test }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test }}-dev
+{% endif %}
+{% endfor %}
+
+[all:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+[baseline]
+{% for test in enabled_sysbench_tests %}
+{{ kdevops_host_prefix }}-{{ test }}
+{% endfor %}
+
+[baseline:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% if kdevops_baseline_and_dev %}
+[dev]
+{% for test in enabled_sysbench_tests %}
+{{ kdevops_host_prefix }}-{{ test }}-dev
+{% endfor %}
+
+[dev:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endif %}
+[sysbench]
+{% for test in enabled_sysbench_tests %}
+{{ kdevops_host_prefix }}-{{ test }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test }}-dev
+{% endif %}
+{% endfor %}
+
+[sysbench:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% for test in enabled_sysbench_tests %}
+[sysbench_{{ test | replace('-', '_') }}]
+{{ kdevops_host_prefix }}-{{ test }}
+{% if kdevops_baseline_and_dev %}
+{{ kdevops_host_prefix }}-{{ test }}-dev
+{% endif %}
+
+[sysbench_{{ test | replace('-', '_') }}:vars]
+ansible_python_interpreter = "{{ kdevops_python_interpreter }}"
+
+{% endfor %}
diff --git a/workflows/ai/Makefile b/workflows/ai/Makefile
index 1c297edd..27dea382 100644
--- a/workflows/ai/Makefile
+++ b/workflows/ai/Makefile
@@ -4,7 +4,8 @@ PHONY += ai-tests ai-tests-baseline ai-tests-dev
PHONY += ai-tests-results
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := hosts.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := hosts.j2
endif
export AI_DATA_TARGET := $(subst ",,$(CONFIG_AI_BENCHMARK_RESULTS_DIR))
diff --git a/workflows/blktests/Makefile b/workflows/blktests/Makefile
index 11cd9a65..97649026 100644
--- a/workflows/blktests/Makefile
+++ b/workflows/blktests/Makefile
@@ -12,7 +12,8 @@ ID=$(shell id -u)
BLKTESTS_ARGS :=
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := blktests.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := blktests.j2
endif
BLKTESTS_GIT:=$(subst ",,$(CONFIG_BLKTESTS_GIT))
diff --git a/workflows/cxl/Makefile b/workflows/cxl/Makefile
index bb130057..feabe197 100644
--- a/workflows/cxl/Makefile
+++ b/workflows/cxl/Makefile
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: copyleft-next-0.3.1
-export KDEVOPS_HOSTS_TEMPLATE := cxl.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := cxl.j2
CXL_ARGS :=
CXL_ARGS += ndctl_git='$(subst ",,$(CONFIG_NDCTL_GIT))'
diff --git a/workflows/fio-tests/Makefile b/workflows/fio-tests/Makefile
index 5eb2ccbd..20a5d192 100644
--- a/workflows/fio-tests/Makefile
+++ b/workflows/fio-tests/Makefile
@@ -1,5 +1,6 @@
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := fio-tests.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := fio-tests.j2
endif
fio-tests:
diff --git a/workflows/fstests/Makefile b/workflows/fstests/Makefile
index d2e5c636..989c564b 100644
--- a/workflows/fstests/Makefile
+++ b/workflows/fstests/Makefile
@@ -9,7 +9,8 @@ FSTESTS_BASELINE_EXTRA :=
export FSTYP:=$(subst ",,$(CONFIG_FSTESTS_FSTYP))
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := fstests.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := fstests.j2
endif
FSTESTS_ARGS += fstests_fstyp='$(FSTYP)'
diff --git a/workflows/gitr/Makefile b/workflows/gitr/Makefile
index c685395a..eadcdac1 100644
--- a/workflows/gitr/Makefile
+++ b/workflows/gitr/Makefile
@@ -1,5 +1,6 @@
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := gitr.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := gitr.j2
endif
GITR_MNT:=$(subst ",,$(CONFIG_GITR_MNT))
diff --git a/workflows/linux/Makefile b/workflows/linux/Makefile
index 30b123f9..60d755b3 100644
--- a/workflows/linux/Makefile
+++ b/workflows/linux/Makefile
@@ -14,7 +14,8 @@ TREE_CONFIG:=config-$(TREE_REF)-pure-iomap
endif
ifeq (y,$(CONFIG_BOOTLINUX_BUILDER))
-KDEVOPS_HOSTS_TEMPLATE=builder.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# KDEVOPS_HOSTS_TEMPLATE=builder.j2
endif
# Describes the Linux clone
diff --git a/workflows/ltp/Makefile b/workflows/ltp/Makefile
index 767465bc..b3c3319b 100644
--- a/workflows/ltp/Makefile
+++ b/workflows/ltp/Makefile
@@ -1,5 +1,6 @@
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := ltp.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := ltp.j2
endif
LTP_REPO:=$(subst ",,$(CONFIG_LTP_REPO))
diff --git a/workflows/mmtests/Makefile b/workflows/mmtests/Makefile
index b65d256b..186dc8cb 100644
--- a/workflows/mmtests/Makefile
+++ b/workflows/mmtests/Makefile
@@ -1,7 +1,8 @@
MMTESTS_ARGS :=
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := mmtests.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := mmtests.j2
endif
mmtests:
diff --git a/workflows/nfstest/Makefile b/workflows/nfstest/Makefile
index bbfd3f64..bc880b6d 100644
--- a/workflows/nfstest/Makefile
+++ b/workflows/nfstest/Makefile
@@ -1,5 +1,6 @@
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := nfstest.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := nfstest.j2
endif # CONFIG_WORKFLOWS_DEDICATED_WORKFLOW
ifeq (y,$(CONFIG_NFSTEST_USE_KDEVOPS_NFSD))
diff --git a/workflows/pynfs/Makefile b/workflows/pynfs/Makefile
index 2f3ff97b..b7bb12bb 100644
--- a/workflows/pynfs/Makefile
+++ b/workflows/pynfs/Makefile
@@ -1,5 +1,6 @@
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := pynfs.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := pynfs.j2
endif
PYNFS_GIT:=$(subst ",,$(CONFIG_PYNFS_GIT))
diff --git a/workflows/selftests/Makefile b/workflows/selftests/Makefile
index d3b7044c..4ec691f3 100644
--- a/workflows/selftests/Makefile
+++ b/workflows/selftests/Makefile
@@ -3,7 +3,8 @@
SELFTESTS_ARGS :=
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := selftests.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := selftests.j2
endif
SELFTESTS_DYNAMIC_RUNTIME_VARS := "kdevops_run_selftests": True
diff --git a/workflows/sysbench/Makefile b/workflows/sysbench/Makefile
index daf7bc75..5f484691 100644
--- a/workflows/sysbench/Makefile
+++ b/workflows/sysbench/Makefile
@@ -1,7 +1,8 @@
PHONY += sysbench sysbench-test sysbench-telemetry sysbench-help-menu
ifeq (y,$(CONFIG_WORKFLOWS_DEDICATED_WORKFLOW))
-export KDEVOPS_HOSTS_TEMPLATE := sysbench.j2
+# After refactoring, all workflows use hosts.j2 which includes workflow-specific templates
+# export KDEVOPS_HOSTS_TEMPLATE := sysbench.j2
endif
TAGS_SYSBENCH_RUN := db_start
--
2.50.1
next prev parent reply other threads:[~2025-08-29 10:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 10:56 [PATCH 0/2] declared hosts support Luis Chamberlain
2025-08-29 10:56 ` Luis Chamberlain [this message]
2025-08-29 16:42 ` [PATCH 1/2] gen_hosts: refactor monolithic hosts.j2 template into per-workflow templates Chuck Lever
2025-08-29 10:56 ` [PATCH 2/2] declared_hosts: add support for pre-existing infrastructure Luis Chamberlain
-- strict thread matches above, loose matches on Subject: below --
2025-08-29 10:31 [PATCH 0/2] declared hosts support Luis Chamberlain
2025-08-29 10:31 ` [PATCH 1/2] gen_hosts: refactor monolithic hosts.j2 template into per-workflow templates Luis Chamberlain
2025-08-29 10:36 ` Luis Chamberlain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250829105645.1289069-2-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=cel@kernel.org \
--cc=da.gomez@kruces.com \
--cc=kdevops@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox