From: Luis Chamberlain <mcgrof@kernel.org>
To: linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org
Cc: patches@lists.linux.dev, amir73il@gmail.com, pankydev8@gmail.com,
tytso@mit.edu, josef@toxicpanda.com, jmeneghi@redhat.com,
jake@lwn.net, mcgrof@kernel.org
Subject: [PATCH 3/4] playbooks: add a common playbook a git reset task for kdevops
Date: Fri, 13 May 2022 12:38:30 -0700 [thread overview]
Message-ID: <20220513193831.4136212-4-mcgrof@kernel.org> (raw)
In-Reply-To: <20220513193831.4136212-1-mcgrof@kernel.org>
Two playbooks share the concept of git cloning kdevops into
the target nodes (guests, cloud hosts, baremetal hosts) so that
expunge files can be used for avoiding tests. If you decide
you want to change the URL for that git tree it may not be
so obvious what to do.
Fortunately the solution is simple. You just tell ansible to use
the new git tree URL. That's it. It won't remove the old directory
and things work as expected.
But since we use the kdevops git tree on both fstests and blktests
it is not so obvious to developers that the thing to do here is
to just run 'make fstests' or 'make blktests' and even that is not
as efficient as that will also re-clone the fstests or blktests
tree respectively. When we just want to reset the kdevops git tree
we currently have no semantics to specify that. But since this is
a common post-deployment goal, just add a common playbook that let's
us do common tasks.
All we need then is the kconfig logic to define when some commmon
tasks might make sense. So to reset your kdevops git tree, all you
have to do now is change the configuration for it, then run:
make
make kdevops-git-reset
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
kconfigs/workflows/Kconfig | 4 +++
playbooks/common.yml | 4 +++
playbooks/roles/common/README.md | 38 ++++++++++++++++++++++++
playbooks/roles/common/defaults/main.yml | 7 +++++
playbooks/roles/common/tasks/main.yml | 23 ++++++++++++++
workflows/common/Makefile | 12 ++++++++
6 files changed, 88 insertions(+)
create mode 100644 playbooks/common.yml
create mode 100644 playbooks/roles/common/README.md
create mode 100644 playbooks/roles/common/defaults/main.yml
create mode 100644 playbooks/roles/common/tasks/main.yml
diff --git a/kconfigs/workflows/Kconfig b/kconfigs/workflows/Kconfig
index 7f71470..817335b 100644
--- a/kconfigs/workflows/Kconfig
+++ b/kconfigs/workflows/Kconfig
@@ -175,6 +175,10 @@ source "workflows/blktests/Kconfig"
endmenu
endif # KDEVOPS_WORKFLOW_ENABLE_BLKTESTS
+config KDEVOPS_WORKFLOW_GIT_CLONES_KDEVOPS_GIT
+ bool
+ default y if KDEVOPS_WORKFLOW_ENABLE_FSTESTS || KDEVOPS_WORKFLOW_ENABLE_BLKTESTS
+
endif # WORKFLOWS_LINUX_TESTS
endif # WORKFLOWS_TESTS
diff --git a/playbooks/common.yml b/playbooks/common.yml
new file mode 100644
index 0000000..48485e3
--- /dev/null
+++ b/playbooks/common.yml
@@ -0,0 +1,4 @@
+---
+- hosts: all
+ roles:
+ - role: common
diff --git a/playbooks/roles/common/README.md b/playbooks/roles/common/README.md
new file mode 100644
index 0000000..2b0084c
--- /dev/null
+++ b/playbooks/roles/common/README.md
@@ -0,0 +1,38 @@
+common
+======
+
+The common role lets you add tasks which is commmon to all workflows.
+Without this we would be duplicating code.
+
+Requirements
+------------
+
+None.
+
+Role Variables
+--------------
+
+ * kdevops_git_reset: perform a git reset. This is useful in case you want
+ to change the URL you use for kdevops.
+
+Dependencies
+------------
+
+None.
+
+Example Playbook
+----------------
+
+Below is an example playbook task:
+
+```
+---
+- hosts: all
+ roles:
+ - role: common
+```
+
+License
+-------
+
+copyleft-next-0.3.1
diff --git a/playbooks/roles/common/defaults/main.yml b/playbooks/roles/common/defaults/main.yml
new file mode 100644
index 0000000..69cd0af
--- /dev/null
+++ b/playbooks/roles/common/defaults/main.yml
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier copyleft-next-0.3.1
+---
+
+kdevops_data: "/data/kdevops"
+kdevops_git: "https://github.com/linux-kdevops/kdevops.git"
+
+kdevops_git_reset: False
diff --git a/playbooks/roles/common/tasks/main.yml b/playbooks/roles/common/tasks/main.yml
new file mode 100644
index 0000000..4482349
--- /dev/null
+++ b/playbooks/roles/common/tasks/main.yml
@@ -0,0 +1,23 @@
+---
+- name: Import optional extra_args file
+ include_vars: "{{ item }}"
+ ignore_errors: yes
+ with_first_found:
+ - files:
+ - "../extra_vars.yml"
+ - "../extra_vars.yaml"
+ - "../extra_vars.json"
+ skip: true
+ tags: vars
+
+# Distro agnostic stuff goes below
+
+- name: git reset kdevops
+ environment:
+ GIT_SSL_NO_VERIFY: true
+ git:
+ repo: "{{ kdevops_git }}"
+ dest: "{{ kdevops_data }}"
+ tags: [ 'kdevops_reset']
+ when:
+ - kdevops_git_reset|bool
diff --git a/workflows/common/Makefile b/workflows/common/Makefile
index da21d78..6596ed1 100644
--- a/workflows/common/Makefile
+++ b/workflows/common/Makefile
@@ -32,3 +32,15 @@ WORKFLOW_ARGS += data_user=$(WORKFLOW_DATA_USER)
WORKFLOW_ARGS += data_group=$(WORKFLOW_DATA_GROUP)
endif # CONFIG_WORKFLOW_INFER_USER_AND_GROUP == y
+
+ifeq (y,$(CONFIG_KDEVOPS_WORKFLOW_GIT_CLONES_KDEVOPS_GIT))
+kdevops-git-reset:
+ $(Q)ansible-playbook -f 30 -i hosts playbooks/common.yml --tags vars,kdevops_reset --extra-vars '{ kdevops_git_reset: True }' $(LIMIT_HOSTS)
+
+kdevops-help-menu:
+ @echo "Common workflow options:"
+ @echo "kdevops-git-reset: - Resets your kdevops git tree URL and contents on guests"
+ @echo
+
+HELP_TARGETS += kdevops-help-menu
+endif # CONFIG_KDEVOPS_WORKFLOW_GIT_CLONES_KDEVOPS_GIT
--
2.35.1
next prev parent reply other threads:[~2022-05-13 19:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 19:38 [PATCH 0/4] kdevops: use linux-kdevops for the main tree Luis Chamberlain
2022-05-13 19:38 ` [PATCH 1/4] workflows/Kconfig: be consistent when enabling fstests or blktests Luis Chamberlain
2022-05-14 2:21 ` Bart Van Assche
2022-05-15 15:10 ` Luis Chamberlain
2022-05-13 19:38 ` [PATCH 2/4] kdevops: move generic kdevops variables to its own file Luis Chamberlain
2022-05-13 19:38 ` Luis Chamberlain [this message]
2022-05-20 14:44 ` [PATCH 3/4] playbooks: add a common playbook a git reset task for kdevops Pankaj Raghav
2022-05-23 17:38 ` Luis Chamberlain
2022-05-13 19:38 ` [PATCH 4/4] kdevops: make linux-kdevops the default tree 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=20220513193831.4136212-4-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=amir73il@gmail.com \
--cc=jake@lwn.net \
--cc=jmeneghi@redhat.com \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=pankydev8@gmail.com \
--cc=patches@lists.linux.dev \
--cc=tytso@mit.edu \
/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;
as well as URLs for NNTP newsgroup(s).