public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Chuck Lever <cel@kernel.org>
To: Luis Chamberlain <mcgrof@kernel.org>,
	Daniel Gomez <da.gomez@kruces.com>,
	kdevops@lists.linux.dev
Subject: Re: [PATCH 1/2] gen_hosts: refactor monolithic hosts.j2 template into per-workflow templates
Date: Fri, 29 Aug 2025 12:42:34 -0400	[thread overview]
Message-ID: <ffbe68d3-7e05-4d49-b143-3ca5b5c17b25@kernel.org> (raw)
In-Reply-To: <20250829105645.1289069-2-mcgrof@kernel.org>

On 8/29/25 6:56 AM, Luis Chamberlain wrote:
> 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' %}

Seems like a smarter approach here would be to have the gen_hosts
playbook's "ansible.builtin.template" step select the .j2 file to
templatize. Just construct the template's pathname based on the name of
the workflow.

Then you don't have to add a new "if" arm when adding a new workflow
template.


>  {% 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

This comment seems like Claude is "showing his work". I'm not sure there
is a long-term value in keeping these comments, and they might end up
becoming technical debt over time.


>  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


-- 
Chuck Lever

  reply	other threads:[~2025-08-29 16:42 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 ` [PATCH 1/2] gen_hosts: refactor monolithic hosts.j2 template into per-workflow templates Luis Chamberlain
2025-08-29 16:42   ` Chuck Lever [this message]
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=ffbe68d3-7e05-4d49-b143-3ca5b5c17b25@kernel.org \
    --to=cel@kernel.org \
    --cc=da.gomez@kruces.com \
    --cc=kdevops@lists.linux.dev \
    --cc=mcgrof@kernel.org \
    /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