Blame SOURCES/0001-fix-Execute-playbook-asynchronously.patch

f759f0
From 701885f0f7173f2b0ae113618d15c9f73e9522d2 Mon Sep 17 00:00:00 2001
1781c3
From: Link Dupont <link@sub-pop.net>
1781c3
Date: Wed, 5 May 2021 14:10:49 -0400
1781c3
Subject: [PATCH] fix: Execute playbook asynchronously
1781c3
1781c3
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.
f759f0
f759f0
Resolves: rhbz#2020426
f759f0
f759f0
(cherry picked from commit 332d28d1bb636a5dc8ff5ddf3da8359a9a78b297)
f759f0
Signed-off-by: Gael Chamoulaud (Strider) <gchamoul@redhat.com>
1781c3
---
1781c3
 rhc_worker_playbook/server.py | 10 +++++++---
1781c3
 1 file changed, 7 insertions(+), 3 deletions(-)
1781c3
1781c3
diff --git a/rhc_worker_playbook/server.py b/rhc_worker_playbook/server.py
1781c3
index 985ea98..8fa393f 100644
1781c3
--- a/rhc_worker_playbook/server.py
1781c3
+++ b/rhc_worker_playbook/server.py
1781c3
@@ -16,6 +16,7 @@ import time
1781c3
 import json
1781c3
 import uuid
1781c3
 import atexit
1781c3
+import asyncio
1781c3
 from subprocess import Popen, PIPE
1781c3
 from requests import Request
1781c3
 from concurrent import futures
1781c3
@@ -135,9 +136,13 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer):
1781c3
         '''
1781c3
         Act on messages sent to the WorkerService
1781c3
         '''
1781c3
-        # we have received it
1781c3
-        yggdrasil_pb2.Receipt()
1781c3
 
1781c3
+        loop = asyncio.new_event_loop()
1781c3
+        loop.run_until_complete(self._run_data(request))
1781c3
+
1781c3
+        return yggdrasil_pb2.Receipt()
1781c3
+
1781c3
+    async def _run_data(self, request):
1781c3
         # load configuration
1781c3
         config = _loadConfig()
1781c3
 
1781c3
@@ -256,7 +261,6 @@ class WorkerService(yggdrasil_pb2_grpc.WorkerServicer):
1781c3
         _log("Posting events...")
1781c3
         response = self.dispatcher.Send(returnedEvents)
1781c3
         _log("Post complete.")
1781c3
-        return
1781c3
 
1781c3
 def serve():
1781c3
     # load config to get directive