We have some news to share for the request index beta feature. We’ve added more options to sort your requests, counters to the individual filters and documentation for the search functionality. Checkout the blog post for more details.

File discover-both-.yml-and-.yaml-playbooks-bsc-1211888.patch of Package venv-salt-minion

From 05fbd376090c5d7f997c510db0abb62be54d6d40 Mon Sep 17 00:00:00 2001
From: Johannes Hahn <johannes.hahn@suse.com>
Date: Tue, 20 Feb 2024 15:38:08 +0100
Subject: [PATCH] Discover both *.yml and *.yaml playbooks (bsc#1211888)

Allow for 'playbook_extension' to be either a string or a tuple and
change the default behavior to discover both.
---
 changelog/66048.changed.md                    |  1 +
 salt/modules/ansiblegate.py                   | 46 +++++++++----------
 .../pytests/unit/modules/test_ansiblegate.py  |  3 ++
 .../example_playbooks/playbook1.yaml          |  5 ++
 4 files changed, 30 insertions(+), 25 deletions(-)
 create mode 100644 changelog/66048.changed.md
 create mode 100644 tests/unit/files/playbooks/example_playbooks/playbook1.yaml

diff --git a/changelog/66048.changed.md b/changelog/66048.changed.md
new file mode 100644
index 0000000000..b042e0d313
--- /dev/null
+++ b/changelog/66048.changed.md
@@ -0,0 +1 @@
+Ansiblegate discover_playbooks was changed to find playbooks as either *.yml or *.yaml files
diff --git a/salt/modules/ansiblegate.py b/salt/modules/ansiblegate.py
index 2f60a7444f..920c374e5a 100644
--- a/salt/modules/ansiblegate.py
+++ b/salt/modules/ansiblegate.py
@@ -111,7 +111,7 @@ def __virtual__():
     if proc.returncode != 0:
         return (
             False,
-            "Failed to get the listing of ansible modules:\n{}".format(proc.stderr),
+            f"Failed to get the listing of ansible modules:\n{proc.stderr}",
         )
 
     module_funcs = dir(sys.modules[__name__])
@@ -240,7 +240,7 @@ def call(module, *args, **kwargs):
         _kwargs = {k: v for (k, v) in kwargs.items() if not k.startswith("__pub")}
 
     for key, value in _kwargs.items():
-        module_args.append("{}={}".format(key, salt.utils.json.dumps(value)))
+        module_args.append(f"{key}={salt.utils.json.dumps(value)}")
 
     with NamedTemporaryFile(mode="w") as inventory:
 
@@ -367,15 +367,15 @@ def playbooks(
     if diff:
         command.append("--diff")
     if isinstance(extra_vars, dict):
-        command.append("--extra-vars='{}'".format(json.dumps(extra_vars)))
+        command.append(f"--extra-vars='{json.dumps(extra_vars)}'")
     elif isinstance(extra_vars, str) and extra_vars.startswith("@"):
-        command.append("--extra-vars={}".format(extra_vars))
+        command.append(f"--extra-vars={extra_vars}")
     if flush_cache:
         command.append("--flush-cache")
     if inventory:
-        command.append("--inventory={}".format(inventory))
+        command.append(f"--inventory={inventory}")
     if limit:
-        command.append("--limit={}".format(limit))
+        command.append(f"--limit={limit}")
     if list_hosts:
         command.append("--list-hosts")
     if list_tags:
@@ -383,25 +383,25 @@ def playbooks(
     if list_tasks:
         command.append("--list-tasks")
     if module_path:
-        command.append("--module-path={}".format(module_path))
+        command.append(f"--module-path={module_path}")
     if skip_tags:
-        command.append("--skip-tags={}".format(skip_tags))
+        command.append(f"--skip-tags={skip_tags}")
     if start_at_task:
-        command.append("--start-at-task={}".format(start_at_task))
+        command.append(f"--start-at-task={start_at_task}")
     if syntax_check:
         command.append("--syntax-check")
     if tags:
-        command.append("--tags={}".format(tags))
+        command.append(f"--tags={tags}")
     if playbook_kwargs:
         for key, value in playbook_kwargs.items():
             key = key.replace("_", "-")
             if value is True:
-                command.append("--{}".format(key))
+                command.append(f"--{key}")
             elif isinstance(value, str):
-                command.append("--{}={}".format(key, value))
+                command.append(f"--{key}={value}")
             elif isinstance(value, dict):
-                command.append("--{}={}".format(key, json.dumps(value)))
-    command.append("--forks={}".format(forks))
+                command.append(f"--{key}={json.dumps(value)}")
+    command.append(f"--forks={forks}")
     cmd_kwargs = {
         "env": {
             "ANSIBLE_STDOUT_CALLBACK": "json",
@@ -502,7 +502,7 @@ def discover_playbooks(
         List of paths to discover playbooks from.
 
     :param playbook_extension:
-        File extension of playbooks file to search for. Default: "yml"
+        File extension(s) of playbook files to search for, can be a string or tuple of strings. Default: (".yml", ".yaml")
 
     :param hosts_filename:
         Filename of custom playbook inventory to search for. Default: "hosts"
@@ -533,19 +533,17 @@ def discover_playbooks(
         )
 
     if not playbook_extension:
-        playbook_extension = "yml"
+        playbook_extension = (".yml", ".yaml")
     if not hosts_filename:
         hosts_filename = "hosts"
 
     if path:
         if not os.path.isabs(path):
             raise CommandExecutionError(
-                "The given path is not an absolute path: {}".format(path)
+                f"The given path is not an absolute path: {path}"
             )
         if not os.path.isdir(path):
-            raise CommandExecutionError(
-                "The given path is not a directory: {}".format(path)
-            )
+            raise CommandExecutionError(f"The given path is not a directory: {path}")
         return {
             path: _explore_path(path, playbook_extension, hosts_filename, syntax_check)
         }
@@ -573,7 +571,7 @@ def _explore_path(path, playbook_extension, hosts_filename, syntax_check):
         # Check files in the given path
         for _f in os.listdir(path):
             _path = os.path.join(path, _f)
-            if os.path.isfile(_path) and _path.endswith("." + playbook_extension):
+            if os.path.isfile(_path) and _path.endswith(playbook_extension):
                 ret[_f] = {"fullpath": _path}
                 # Check for custom inventory file
                 if os.path.isfile(os.path.join(path, hosts_filename)):
@@ -584,9 +582,7 @@ def _explore_path(path, playbook_extension, hosts_filename, syntax_check):
                 # Check files in the 1st level of subdirectories
                 for _f2 in os.listdir(_path):
                     _path2 = os.path.join(_path, _f2)
-                    if os.path.isfile(_path2) and _path2.endswith(
-                        "." + playbook_extension
-                    ):
+                    if os.path.isfile(_path2) and _path2.endswith(playbook_extension):
                         ret[os.path.join(_f, _f2)] = {"fullpath": _path2}
                         # Check for custom inventory file
                         if os.path.isfile(os.path.join(_path, hosts_filename)):
@@ -599,7 +595,7 @@ def _explore_path(path, playbook_extension, hosts_filename, syntax_check):
                             )
     except Exception as exc:
         raise CommandExecutionError(
-            "There was an exception while discovering playbooks: {}".format(exc)
+            f"There was an exception while discovering playbooks: {exc}"
         )
 
     # Run syntax check validation
diff --git a/tests/pytests/unit/modules/test_ansiblegate.py b/tests/pytests/unit/modules/test_ansiblegate.py
index 6201809c22..272da721bf 100644
--- a/tests/pytests/unit/modules/test_ansiblegate.py
+++ b/tests/pytests/unit/modules/test_ansiblegate.py
@@ -198,6 +198,9 @@ def test_ansible_discover_playbooks_single_path():
     assert ret[playbooks_dir]["playbook1.yml"] == {
         "fullpath": os.path.join(playbooks_dir, "playbook1.yml")
     }
+    assert ret[playbooks_dir]["playbook1.yaml"] == {
+        "fullpath": os.path.join(playbooks_dir, "playbook1.yaml")
+    }
     assert ret[playbooks_dir]["example-playbook2/site.yml"] == {
         "fullpath": os.path.join(playbooks_dir, "example-playbook2/site.yml"),
         "custom_inventory": os.path.join(playbooks_dir, "example-playbook2/hosts"),
diff --git a/tests/unit/files/playbooks/example_playbooks/playbook1.yaml b/tests/unit/files/playbooks/example_playbooks/playbook1.yaml
new file mode 100644
index 0000000000..e258a101e1
--- /dev/null
+++ b/tests/unit/files/playbooks/example_playbooks/playbook1.yaml
@@ -0,0 +1,5 @@
+---
+- hosts: all
+  gather_facts: false
+  tasks:
+    - ping:
-- 
2.43.1

openSUSE Build Service is sponsored by