From 21b28cfe138f68733b4dfb5fb69e1a0c05145837 Mon Sep 17 00:00:00 2001 From: Pierre Lasorak Date: Tue, 26 Mar 2024 15:47:32 +0100 Subject: [PATCH] 10 seconds timeout for k8spm --- src/nanorc/appctrl.py | 42 +++++++++++++++++++++++++++++++++--------- src/nanorc/node.py | 9 ++++++++- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/nanorc/appctrl.py b/src/nanorc/appctrl.py index df61405..828c07c 100644 --- a/src/nanorc/appctrl.py +++ b/src/nanorc/appctrl.py @@ -208,7 +208,15 @@ class AppCommander: """docstring for DAQAppController""" def __init__( - self, console: Console, app: str, host: str, port: int, response_port: int, response_host: str = None, proxy : tuple = None + self, + console:Console, + app:str, + host:str, + port:int, + response_port:int, + response_host:str = None, + proxy:tuple = None, + connection_timeout:int = 1, ): self.log = logging.getLogger(app) self.console = console @@ -221,6 +229,7 @@ def __init__( self.proxy = proxy self.response_queue = Queue() self.sent_cmd = None + self.connection_timeout = connection_timeout def __del__(self): pass @@ -232,11 +241,11 @@ def ping(self): if not self.proxy: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.settimeout(1) + s.settimeout(self.connection_timeout) else: s = socks.socksocket(socket.AF_INET, socket.SOCK_STREAM) s.set_proxy(socks.SOCKS5, self.proxy[0], self.proxy[1]) - s.settimeout(1) + s.settimeout(self.connection_timeout) try: s.connect((self.app_host, self.app_port)) s.shutdown(2) @@ -269,10 +278,10 @@ def send_command(self, ack = requests.post( self.app_url, - data=json.dumps(cmd), - headers=headers, - timeout=1., - proxies={ + data = json.dumps(cmd), + headers = headers, + timeout = self.connection_timeout, + proxies = { 'http': f'socks5h://{self.proxy[0]}:{self.proxy[1]}', 'https': f'socks5h://{self.proxy[0]}:{self.proxy[1]}' } if self.proxy else None @@ -320,11 +329,26 @@ class AppSupervisor: Tracks the last executed and successful commands """ - def __init__(self, console: Console, desc: AppProcessDescriptor, listener: ResponseListener, response_host: str = None, proxy: tuple = None): + def __init__( + self, + console: Console, + desc: AppProcessDescriptor, + listener: ResponseListener, + response_host: str = None, + proxy: tuple = None, + connection_timeout:int=1, + ): self.console = console self.desc = desc self.commander = AppCommander( - console, desc.name, desc.host, desc.port, listener.port, response_host, proxy + console = console, + app = desc.name, + host = desc.host, + port = desc.port, + response_port = listener.port, + response_host = response_host, + proxy = proxy, + connection_timeout = connection_timeout, ) self.last_sent_command = None self.last_ok_command = None diff --git a/src/nanorc/node.py b/src/nanorc/node.py index e5c18aa..1ae76a7 100644 --- a/src/nanorc/node.py +++ b/src/nanorc/node.py @@ -280,7 +280,14 @@ def on_enter_boot_ing(self, event) -> NoReturn: name=n, console=self.console, log=self.log, - sup=AppSupervisor(self.console, d, self.listener, response_host, proxy), + sup = AppSupervisor( + console = self.console, + desc = d, + listener = self.listener, + response_host = response_host, + proxy = proxy, + connection_timeout = 10 if event.kwargs['pm'].use_k8spm() else 1, + ), parent=self, fsm_conf=self.fsm_conf)