Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: This PR is to trigger periodic CI testing #2

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from
64 changes: 64 additions & 0 deletions tests/callback_plugins/dump_packages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2023, Red Hat, Inc.
# SPDX-License-Identifier: MIT

from __future__ import absolute_import, division, print_function

__metaclass__ = type

DOCUMENTATION = """
author: Rich Megginson
name: dump_packages
type: aggregate
short_description: dump arguments to package module
description:
- Dump arguments to package module to get list of packages.
- Used in conjunction with CI testing to get the packages used
- with all combinations of: distribution/version/role arguments
- Used to generate lists of packages for ostree image builds.
requirements:
- None
"""

from ansible.plugins.callback import CallbackBase # noqa: E402


class CallbackModule(CallbackBase):
"""
Dump packages.
"""

CALLBACK_VERSION = 2.0
CALLBACK_TYPE = "aggregate"
CALLBACK_NAME = "dump_packages"
# needed for 2.9 compatibility
CALLBACK_NEEDS_WHITELIST = False # wokeignore:rule=whitelist
CALLBACK_NEEDS_ENABLED = False

def __init__(self, *args, **kwargs):
super(CallbackModule, self).__init__(*args, **kwargs)

def v2_runner_on_ok(self, result):
fields = result._task_fields
if (
fields["action"] in ["package", "dnf", "yum"]
and fields["args"].get("state") != "absent"
):
packages = set()
if "invocation" in result._result:
results = [result._result]
elif "results" in result._result and isinstance(
result._result["results"], list
):
results = result._result["results"]
for item in results:
pkgs = item["invocation"]["module_args"]["name"]
if isinstance(pkgs, list):
for ii in pkgs:
packages.add(ii)
else:
packages.add(pkgs)
# tell python black that this line is ok
# fmt: off
self._display.display("lsrpackages: " + " ".join(sorted(list(packages))))
# fmt: on