From ca7712d3a67072a87d935d16698b555fa812151f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Sep 27 2022 10:07:29 +0000 Subject: import rhc-worker-playbook-0.1.8-3.el8 --- diff --git a/SOURCES/0001-fix-Execute-playbook-asynchronously.patch b/SOURCES/0001-fix-Execute-playbook-asynchronously.patch new file mode 100644 index 0000000..ef50446 --- /dev/null +++ b/SOURCES/0001-fix-Execute-playbook-asynchronously.patch @@ -0,0 +1,51 @@ +From 701885f0f7173f2b0ae113618d15c9f73e9522d2 Mon Sep 17 00:00:00 2001 +From: Link Dupont +Date: Wed, 5 May 2021 14:10:49 -0400 +Subject: [PATCH] fix: Execute playbook asynchronously + +Run the playbook code in a coroutine that's scheduled onto a new event loop. Return a protobuf.Receipt message in the WorkerService Send implementation. + +Resolves: rhbz#2020426 + +(cherry picked from commit 332d28d1bb636a5dc8ff5ddf3da8359a9a78b297) +Signed-off-by: Gael Chamoulaud (Strider) +--- + rhc_worker_playbook/server.py | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/rhc_worker_playbook/server.py b/rhc_worker_playbook/server.py +index 985ea98..8fa393f 100644 +--- a/rhc_worker_playbook/server.py ++++ b/rhc_worker_playbook/server.py +@@ -16,6 +16,7 @@ import time + import json + import uuid + import atexit ++import asyncio + from subprocess import Popen, PIPE + from requests import Request + from concurrent import futures +@@ -135,9 +136,13 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer): + ''' + Act on messages sent to the WorkerService + ''' +- # we have received it +- yggdrasil_pb2.Receipt() + ++ loop = asyncio.new_event_loop() ++ loop.run_until_complete(self._run_data(request)) ++ ++ return yggdrasil_pb2.Receipt() ++ ++ async def _run_data(self, request): + # load configuration + config = _loadConfig() + +@@ -256,7 +261,6 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer): + _log("Posting events...") + response = self.dispatcher.Send(returnedEvents) + _log("Post complete.") +- return + + def serve(): + # load config to get directive diff --git a/SOURCES/0002-Do-not-busy-wait-when-playbook-is-running.patch b/SOURCES/0002-Do-not-busy-wait-when-playbook-is-running.patch new file mode 100644 index 0000000..e36c880 --- /dev/null +++ b/SOURCES/0002-Do-not-busy-wait-when-playbook-is-running.patch @@ -0,0 +1,24 @@ +From dba168bf7e00de5b534603019efa513cfa053716 Mon Sep 17 00:00:00 2001 +From: Jeremy Audet +Date: Thu, 4 Aug 2022 17:38:51 -0400 +Subject: [PATCH] Do not busy-wait when playbook is running + +Resolves: rhbz#2104199 + +(cherry picked from commit 579a67fba5ea60543a72b118e5644206c6ba720b) +--- + rhc_worker_playbook/server.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/rhc_worker_playbook/server.py b/rhc_worker_playbook/server.py +index 8fa393f..8e9826f 100644 +--- a/rhc_worker_playbook/server.py ++++ b/rhc_worker_playbook/server.py +@@ -235,6 +235,7 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer): + elapsedTime = 0 + startTime = time.time() + while runnerThread.is_alive(): ++ time.sleep(1) + elapsedTime = time.time() - startTime + if elapsedTime >= response_interval: + # hit the interval, post events diff --git a/SPECS/rhc-worker-playbook.spec b/SPECS/rhc-worker-playbook.spec index 08c22e7..7091899 100644 --- a/SPECS/rhc-worker-playbook.spec +++ b/SPECS/rhc-worker-playbook.spec @@ -5,12 +5,18 @@ Name: rhc-worker-playbook Summary: Red Hat connect worker for launching Ansible Runner Version: 0.1.8 -Release: 0%{?dist} +Release: 3%{?dist} License: GPLv2+ Source: rhc-worker-playbook-0.1.8.tar.gz Source1: https://github.com/ansible-collections/community.general/archive/%{community_general_version}/ansible-collection-community-general-%{community_general_version}.tar.gz Source2: https://github.com/ansible-collections/ansible.posix/archive/%{ansible_posix_version}/ansible-collection-ansible-posix-%{ansible_posix_version}.tar.gz +# +# patches_ignore=DROP-IN-RPM +# patches_base=8ddc5ccfc97290a021b4c4de673b92fedc38cbfb +Patch0001: 0001-fix-Execute-playbook-asynchronously.patch +Patch0002: 0002-Do-not-busy-wait-when-playbook-is-running.patch + ExclusiveArch: %{go_arches} %{?__python3:Requires: %{__python3}} @@ -31,7 +37,11 @@ BuildRequires: python3dist(cython) Python-based worker for Red Hat connect, used to launch Ansible playbooks via Ansible Runner. %prep -%setup -q -a1 -a2 +%setup -q -a1 -a2 -n %{name}-%{version} + +%patch0001 -p1 +%patch0002 -p1 + pushd community.general-%{community_general_version} rm -vr .github .azure-pipelines rm -rvf tests/ @@ -93,10 +103,21 @@ mkdir -p %{buildroot}%{_localstatedir}/log/rhc-worker-playbook/ansible %{_datadir}/rhc-worker-playbook/ansible/collections/ansible_collections/ %{_localstatedir}/log/rhc-worker-playbook/ansible/ %config %{_sysconfdir}/rhc/workers/rhc-worker-playbook.toml +%exclude %{_libdir}/.build-id/ %doc %changelog +* Fri Aug 05 2022 Gael Chamoulaud 0.1.8-3 +- Do not busy-wait when playbook is running (rhbz#2104199) + +* Mon Mar 14 2022 Gaël Chamoulaud - 0.1.8-2 +- Update patches +- Add DROP-IN-RPM patches_ignore rule for rdopkg + +* Mon Feb 21 2022 Gaël Chamoulaud - 0.1.8-1 +- Patch to fix Execute Playbook Asynchronously (RHBZ#2020426) + * Thu Feb 03 2022 Gaël Chamoulaud - 0.1.8-0 - Fix: Bump ansible-runner to 2.1.1 and dependencies in vendor (RHBZ#2053207) - Upload new rhc-worker-playbook-0.1.8.tar.gz source