Skip to content

Commit 7f9df34

Browse files
committed
fix(cli): canfar status checks
1 parent 088b265 commit 7f9df34

5 files changed

Lines changed: 37 additions & 32 deletions

File tree

dtcli/ps.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from dtcli.ls import list
1313
from dtcli.src import functions
1414
from dtcli.utilities import cadcclient
15-
from dtcli.utilities.utilities import set_log_level, validate_scope
15+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
1616

1717
logger = logging.getLogger("ps")
1818

@@ -68,15 +68,7 @@ def ps(
6868
return None
6969

7070
# Check Canfar status.
71-
minoc_up, luskan_up = cadcclient.status()
72-
if not minoc_up:
73-
error_console.print(
74-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
75-
)
76-
elif not luskan_up:
77-
error_console.print(
78-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
79-
)
71+
check_canfar_status(error_console)
8072

8173
try:
8274
files, policies = functions.ps(scope, dataset, verbose, quiet)

dtcli/pull.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from dtcli.config import procure
1212
from dtcli.src.functions import find_missing_dataset_files, get_files
1313
from dtcli.utilities import cadcclient
14-
from dtcli.utilities.utilities import set_log_level, validate_scope
14+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
1515

1616
logger = logging.getLogger("pull")
1717

@@ -110,15 +110,10 @@ def pull( # noqa: C901
110110
return None
111111

112112
# Check Canfar status.
113-
minoc_up, luskan_up = cadcclient.status()
113+
minoc_up, luskan_up = check_canfar_status(error_console)
114+
114115
if not minoc_up:
115-
error_console.print(
116-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
117-
)
118-
elif not luskan_up:
119-
error_console.print(
120-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
121-
)
116+
return None
122117

123118
# Find files missing from localhost.
124119
console.print(f"\nSearching for files for {dataset} {scope}...\n")

dtcli/scout.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from dtcli.config import procure
1414
from dtcli.ls import list as ls
1515
from dtcli.utilities import cadcclient
16-
from dtcli.utilities.utilities import set_log_level, validate_scope
16+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
1717

1818
logger = logging.getLogger("scout")
1919

@@ -79,15 +79,7 @@ def scout( # noqa: C901
7979
return {"error": "No config. Create one with `datatrail config init`."}
8080

8181
# Check Canfar status.
82-
minoc_up, luskan_up = cadcclient.status()
83-
if not minoc_up:
84-
error_console.print(
85-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
86-
)
87-
elif not luskan_up:
88-
error_console.print(
89-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
90-
)
82+
check_canfar_status(error_console)
9183

9284
# Scout dataset.
9385
endpoint = (

dtcli/utilities/cadcclient.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ def status(
422422
else:
423423
raise TypeError
424424
except HTTPError as error:
425-
logger.error(error)
426-
logger.error(f"{url.split('/')[3]} is down.")
425+
logger.warning(error)
426+
logger.warning(f"{url.split('/')[3]} is down.")
427427
except TypeError:
428428
logger.error("Canfar certificate is not valid.")
429429
return minoc_status, luskan_status

dtcli/utilities/utilities.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import json
44
import logging
5-
from typing import Any, Dict, List, Union
5+
from typing import Any, Dict, List, Tuple, Union
66

77
import requests
88
from requests.models import Response
9+
from rich.console import Console
10+
11+
from dtcli.utilities import cadcclient
912

1013
try:
1114
from packaging.version import parse
@@ -133,3 +136,26 @@ def cli_is_latest_release() -> bool:
133136
return current_version == get_latest_released_version()
134137
except (ConnectionError, PackageNotFoundError):
135138
return True
139+
140+
141+
def check_canfar_status(console: Console) -> Tuple[bool, bool]:
142+
"""Checks the status of Luskan and Minoc.
143+
144+
Args:
145+
console: Console to print status messages to.
146+
147+
Returns:
148+
Tuple[bool, bool]: Status of Minoc and Luskan, respectively.
149+
"""
150+
# Check Canfar status.
151+
minoc_up, luskan_up = cadcclient.status()
152+
if not minoc_up:
153+
console.print(":warning: Minoc is down!", style="bold yellow")
154+
if not luskan_up:
155+
console.print(":warning: Luskan is down!", style="bold yellow")
156+
if not minoc_up or not luskan_up:
157+
console.print(
158+
"See https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/en/status/ for service availability.", # noqa: E501
159+
style="bold yellow",
160+
)
161+
return minoc_up, luskan_up

0 commit comments

Comments
 (0)