jobs - lock and reload management

This commit is contained in:
florian
2021-07-28 23:04:56 +02:00
parent 26db144df4
commit f44e41cede
4 changed files with 96 additions and 65 deletions

View File

@@ -5,30 +5,29 @@ class ReloadServerHandler(socketserver.StreamRequestHandler):
def handle(self) :
locked = False
try :
# Get lock order from client
data = self.request.recv(512)
if not data or data != b"lock" :
return
self.server.controller.lock.acquire()
locked = True
# Get reload order from client
data = self.request.recv(512)
if not data or data != b"reload" :
self.server.controller.lock.release()
return
if self.server.controller.reload() :
self.request.sendall(b"ok")
else :
self.request.sendall(b"ko")
# Release the lock
self.server.controller.lock.release()
while True :
data = self.request.recv(512)
if not data or not data in [b"lock", b"reload", b"unlock"] :
break
if data == b"lock" :
self.server.controller.lock.acquire()
locked = True
self.request.sendall(b"ok")
elif data == b"unlock" :
self.server.controller.lock.release()
locked = False
self.request.sendall(b"ok")
elif data == b"reload" :
ret = self.server.controller.reload() :
if ret :
self.request.sendall(b"ok")
else :
self.request.sendall(b"ko")
except Exception as e :
utils.log("Exception ReloadServer : " + str(e))
if locked :
self.server.controller.lock.release()
if locked :
self.server.controller.lock.release()
def run_reload_server(controller) :
server = socketserver.UnixStreamServer("/tmp/autoconf.sock", ReloadServerHandler)