Skip to content

Commit 817f97e

Browse files
updated as per review comments
1 parent 9a135be commit 817f97e

File tree

4 files changed

+66
-32
lines changed

4 files changed

+66
-32
lines changed

ads/aqua/__init__.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from ads import logger, set_auth
1010
from ads.aqua.utils import fetch_service_compartment
11-
from ads.config import NB_SESSION_OCID, OCI_RESOURCE_PRINCIPAL_VERSION
11+
from ads.config import OCI_RESOURCE_PRINCIPAL_VERSION
1212

1313
ENV_VAR_LOG_LEVEL = "ADS_AQUA_LOG_LEVEL"
1414

@@ -36,8 +36,3 @@ def set_log_level(log_level: str):
3636
ODSC_MODEL_COMPARTMENT_OCID = (
3737
os.environ.get("ODSC_MODEL_COMPARTMENT_OCID") or fetch_service_compartment()
3838
)
39-
if not ODSC_MODEL_COMPARTMENT_OCID:
40-
if NB_SESSION_OCID:
41-
logger.error(
42-
f"Aqua is not available for this notebook session {NB_SESSION_OCID}."
43-
)

ads/aqua/cli.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66
import os
77
import sys
88

9-
from ads.aqua import ENV_VAR_LOG_LEVEL, set_log_level, ODSC_MODEL_COMPARTMENT_OCID
9+
from ads.aqua import (
10+
ENV_VAR_LOG_LEVEL,
11+
set_log_level,
12+
ODSC_MODEL_COMPARTMENT_OCID,
13+
logger,
14+
)
1015
from ads.aqua.deployment import AquaDeploymentApp
1116
from ads.aqua.evaluation import AquaEvaluationApp
1217
from ads.aqua.finetune import AquaFineTuningApp
1318
from ads.aqua.model import AquaModelApp
19+
from ads.config import NB_SESSION_OCID
1420

1521

1622
class AquaCommand:
@@ -44,4 +50,11 @@ def __init__(
4450
set_log_level(log_level)
4551
# gracefully exit if env var is not set
4652
if not ODSC_MODEL_COMPARTMENT_OCID:
47-
sys.exit(0)
53+
logger.error(
54+
"ODSC_MODEL_COMPARTMENT_OCID environment variable is not set for Aqua."
55+
)
56+
if NB_SESSION_OCID:
57+
logger.error(
58+
f"Aqua is not available for the notebook session {NB_SESSION_OCID}."
59+
)
60+
sys.exit(1)

ads/aqua/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ def fetch_service_compartment() -> Union[str, None]:
582582
)
583583
except AquaFileNotFoundError:
584584
logger.error(
585-
f"ODSC_MODEL_COMPARTMENT_OCID environment variable is not set for Aqua."
585+
f"Config file {config_file_name}/{CONTAINER_INDEX} to fetch service compartment OCID could not be found."
586586
)
587587
return
588588
compartment_mapping = config.get(COMPARTMENT_MAPPING_KEY)

tests/unitary/with_extras/aqua/test_cli.py

Lines changed: 49 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import os
88
import logging
99
import subprocess
10-
import pytest
1110
from unittest import TestCase
1211
from unittest.mock import patch
1312
from importlib import reload
@@ -21,7 +20,7 @@
2120
class TestAquaCLI(TestCase):
2221
"""Tests the AQUA CLI."""
2322

24-
DEFAUL_AQUA_CLI_LOGGING_LEVEL = "ERROR"
23+
DEFAULT_AQUA_CLI_LOGGING_LEVEL = "ERROR"
2524
logger = logging.getLogger(__name__)
2625
logging.basicConfig(
2726
format="%(asctime)s %(module)s %(levelname)s: %(message)s",
@@ -30,11 +29,6 @@ class TestAquaCLI(TestCase):
3029
)
3130
SERVICE_COMPARTMENT_ID = "ocid1.compartment.oc1..<OCID>"
3231

33-
def setUp(self):
34-
os.environ["ODSC_MODEL_COMPARTMENT_OCID"] = TestAquaCLI.SERVICE_COMPARTMENT_ID
35-
reload(ads.aqua)
36-
reload(ads.aqua.cli)
37-
3832
def test_entrypoint(self):
3933
"""Tests CLI entrypoint."""
4034
result = subprocess.run(["ads", "aqua", "--help"], capture_output=True)
@@ -43,23 +37,55 @@ def test_entrypoint(self):
4337

4438
@parameterized.expand(
4539
[
46-
("default", None, DEFAUL_AQUA_CLI_LOGGING_LEVEL),
40+
("default", None, DEFAULT_AQUA_CLI_LOGGING_LEVEL),
4741
("set logging level", "info", "info"),
4842
]
4943
)
50-
@patch("ads.aqua.cli.set_log_level")
51-
def test_aquacommand(self, name, arg, expected, mock_setting_log):
52-
"""Tests aqua command initailzation."""
53-
if arg:
54-
AquaCommand(arg)
55-
else:
56-
AquaCommand()
57-
mock_setting_log.assert_called_with(expected)
44+
def test_aquacommand(self, name, arg, expected):
45+
"""Tests aqua command initialization."""
46+
with patch.dict(
47+
os.environ,
48+
{"ODSC_MODEL_COMPARTMENT_OCID": TestAquaCLI.SERVICE_COMPARTMENT_ID},
49+
):
50+
reload(ads.config)
51+
reload(ads.aqua)
52+
reload(ads.aqua.cli)
53+
with patch("ads.aqua.cli.set_log_level") as mock_setting_log:
54+
if arg:
55+
AquaCommand(arg)
56+
else:
57+
AquaCommand()
58+
mock_setting_log.assert_called_with(expected)
59+
60+
@parameterized.expand(
61+
[
62+
("default", None),
63+
("using jupyter instance", "nb-session-ocid"),
64+
]
65+
)
66+
def test_aqua_command_without_compartment_env_var(self, name, session_ocid):
67+
"""Test whether exit is called when ODSC_MODEL_COMPARTMENT_OCID is not set. Also check if NB_SESSION_OCID is
68+
set then log the appropriate message."""
5869

59-
@patch("sys.exit")
60-
def test_aqua_command_without_compartment_env_var(self, mock_exit):
61-
os.environ.pop("ODSC_MODEL_COMPARTMENT_OCID", None)
62-
reload(ads.aqua)
63-
reload(ads.aqua.cli)
64-
AquaCommand()
65-
mock_exit.assert_called_with(0)
70+
with patch("sys.exit") as mock_exit:
71+
env_dict = {"ODSC_MODEL_COMPARTMENT_OCID": ""}
72+
if session_ocid:
73+
env_dict.update({"NB_SESSION_OCID": session_ocid})
74+
with patch.dict(os.environ, env_dict):
75+
reload(ads.config)
76+
reload(ads.aqua)
77+
reload(ads.aqua.cli)
78+
with patch("ads.aqua.cli.set_log_level") as mock_setting_log:
79+
with patch("ads.aqua.logger.error") as mock_logger_error:
80+
AquaCommand()
81+
mock_setting_log.assert_called_with(
82+
TestAquaCLI.DEFAULT_AQUA_CLI_LOGGING_LEVEL
83+
)
84+
mock_logger_error.assert_any_call(
85+
"ODSC_MODEL_COMPARTMENT_OCID environment variable is not set for Aqua."
86+
)
87+
if session_ocid:
88+
mock_logger_error.assert_any_call(
89+
f"Aqua is not available for the notebook session {session_ocid}."
90+
)
91+
mock_exit.assert_called_with(1)

0 commit comments

Comments
 (0)