Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions dtcli/utilities/cadcclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import logging
import os
import sys
from concurrent.futures import ThreadPoolExecutor
from io import StringIO
from multiprocessing import Process # Use the standard library only
from typing import Any, Dict, List, Optional, Tuple
Expand Down Expand Up @@ -410,23 +411,25 @@ def status(
]
if not certfile:
certfile = procure(key="vospace_certfile")
minoc_status = False
luskan_status = False
for index, url in enumerate(urls):

def check_url(url: str) -> bool:
response = requests.get(url, cert=certfile, allow_redirects=True)
try:
response.raise_for_status()
authorised = response.headers.get("x-vo-authenticated")
if isinstance(authorised, str):
if index == 0:
minoc_status = True
else:
luskan_status = True
return True
else:
raise TypeError
except HTTPError as error:
logger.warning(error)
logger.warning(f"{url.split('/')[3]} is down.")
return False
except TypeError:
logger.error("Canfar certificate is not valid.")
return minoc_status, luskan_status
return False

with ThreadPoolExecutor(max_workers=len(urls)) as executor:
results = list(executor.map(check_url, urls))

return results[0], results[1]
Loading