Merge pull request #53 from SUNET/patlu-fleetlock-error-handling

sunet-fleetlock: handle connection errors
This commit is contained in:
Patrik Lundin 2024-06-17 13:27:11 +02:00 committed by GitHub
commit 5d88e66379
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -24,20 +24,21 @@
# When modifying this code please make sure it is passed through the following # When modifying this code please make sure it is passed through the following
# tools: # tools:
# === # ===
# isort
# black # black
# pylint # pylint
# mypy --strict # mypy --strict
# === # ===
import platform
import sys
import signal
import time
import argparse import argparse
import configparser import configparser
import os.path import os.path
from typing import Optional, Union import platform
import signal
import sys
import time
from types import FrameType from types import FrameType
from typing import Optional, Union
import requests import requests
@ -80,19 +81,26 @@ def do_fleetlock_request(
request_id_key = "request-id" request_id_key = "request-id"
request_id = None request_id = None
retry_sleep_delay = 1
# Loop forever: we depend on the SIGALRM timout to raise an error if it # Loop forever: we depend on the SIGALRM timout to raise an error if it
# takes too long # takes too long
while True: while True:
if args.verbose: if args.verbose:
print(f"{operation} POST at url {url}") print(f"{operation} POST at url {url}")
try:
resp = requests.post( resp = requests.post(
url, url,
headers=fleetlock_headers, headers=fleetlock_headers,
json=fleetlock_data, json=fleetlock_data,
timeout=args.timeout, timeout=args.request_timeout,
auth=("", config[args.lock_group]["password"]), auth=("", config[args.lock_group]["password"]),
) )
except requests.exceptions.ConnectionError as e:
print(f"POST request failed: {e}")
time.sleep(retry_sleep_delay)
continue
if request_id_key in resp.headers: if request_id_key in resp.headers:
request_id = resp.headers[request_id_key] request_id = resp.headers[request_id_key]
@ -126,7 +134,7 @@ def do_fleetlock_request(
+ f"({request_id_key}: {request_id})" + f"({request_id_key}: {request_id})"
) )
time.sleep(1) time.sleep(retry_sleep_delay)
def read_config(args: argparse.Namespace) -> Union[configparser.ConfigParser, None]: def read_config(args: argparse.Namespace) -> Union[configparser.ConfigParser, None]: