Skip to content

Commit eb88b11

Browse files
Removing ODSC_MODEL_COMPARTMENT_OCID
1 parent 20933af commit eb88b11

File tree

8 files changed

+40
-90
lines changed

8 files changed

+40
-90
lines changed

ads/aqua/__init__.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,3 @@ def set_log_level(log_level: str):
3838

3939
if OCI_RESOURCE_PRINCIPAL_VERSION:
4040
set_auth("resource_principal")
41-
42-
ODSC_MODEL_COMPARTMENT_OCID = (
43-
os.environ.get("ODSC_MODEL_COMPARTMENT_OCID") or "ODSC_MODEL_COMPARTMENT_OCID"
44-
)

ads/aqua/cli.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
#!/usr/bin/env python
2-
# -*- coding: utf-8 -*--
32

4-
# Copyright (c) 2024 Oracle and/or its affiliates.
3+
# Copyright (c) 2024, 2025 Oracle and/or its affiliates.
54
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
65
import os
76

87
from ads.aqua import (
98
ENV_VAR_LOG_LEVEL,
10-
ODSC_MODEL_COMPARTMENT_OCID,
119
logger,
1210
set_log_level,
1311
)
14-
from ads.aqua.common.errors import AquaCLIError, AquaConfigError
12+
from ads.aqua.common.errors import AquaCLIError
1513
from ads.aqua.evaluation import AquaEvaluationApp
1614
from ads.aqua.finetuning import AquaFineTuningApp
1715
from ads.aqua.model import AquaModelApp
1816
from ads.aqua.modeldeployment import AquaDeploymentApp
1917
from ads.common.utils import LOG_LEVELS
20-
from ads.config import NB_SESSION_OCID
2118

2219

2320
class AquaCommand:
@@ -82,16 +79,6 @@ def __init__(
8279

8380
set_log_level(aqua_log_level)
8481

85-
if not ODSC_MODEL_COMPARTMENT_OCID:
86-
if NB_SESSION_OCID:
87-
raise AquaConfigError(
88-
f"Aqua is not available for the notebook session {NB_SESSION_OCID}. For more information, "
89-
f"please refer to the documentation."
90-
)
91-
raise AquaConfigError(
92-
"ODSC_MODEL_COMPARTMENT_OCID environment variable is not set for Aqua."
93-
)
94-
9582
@staticmethod
9683
def _validate_value(flag, value):
9784
"""Check if the given value for bool flag is valid.
Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
#!/usr/bin/env python
22

3-
# Copyright (c) 2024 Oracle and/or its affiliates.
3+
# Copyright (c) 2024, 2025 Oracle and/or its affiliates.
44
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
55

66
import json
77
from importlib import metadata
88
from typing import List, Union
99

1010
from ads.aqua.common.decorator import handle_exceptions
11-
from ads.aqua.common.errors import AquaResourceAccessError
12-
from ads.aqua.common.utils import known_realm
1311
from ads.aqua.extension.aqua_ws_msg_handler import AquaWSMsgHandler
1412
from ads.aqua.extension.models.ws_models import (
1513
AdsVersionResponse,
1614
CompatibilityCheckResponse,
1715
RequestResponseType,
1816
)
19-
from ads.aqua.extension.utils import ui_compatability_check
2017

2118

2219
class AquaCommonWsMsgHandler(AquaWSMsgHandler):
@@ -39,19 +36,8 @@ def process(self) -> Union[AdsVersionResponse, CompatibilityCheckResponse]:
3936
)
4037
return response
4138
if request.get("kind") == "CompatibilityCheck":
42-
if ui_compatability_check():
43-
return CompatibilityCheckResponse(
44-
message_id=request.get("message_id"),
45-
kind=RequestResponseType.CompatibilityCheck,
46-
data={"status": "ok"},
47-
)
48-
elif known_realm():
49-
return CompatibilityCheckResponse(
50-
message_id=request.get("message_id"),
51-
kind=RequestResponseType.CompatibilityCheck,
52-
data={"status": "compatible"},
53-
)
54-
else:
55-
raise AquaResourceAccessError(
56-
"The AI Quick actions extension is not compatible in the given region."
57-
)
39+
return CompatibilityCheckResponse(
40+
message_id=request.get("message_id"),
41+
kind=RequestResponseType.CompatibilityCheck,
42+
data={"status": "ok"},
43+
)

ads/aqua/extension/utils.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
import traceback
77
import uuid
88
from dataclasses import fields
9-
from datetime import datetime, timedelta
109
from http.client import responses
1110
from typing import Dict, Optional
1211

13-
from cachetools import TTLCache, cached
1412
from tornado.web import HTTPError
1513

16-
from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID, logger
14+
from ads.aqua import logger
1715
from ads.aqua.constants import (
1816
AQUA_TROUBLESHOOTING_LINK,
1917
OCI_OPERATION_FAILURES,
@@ -35,14 +33,6 @@ def validate_function_parameters(data_class, input_data: Dict):
3533
)
3634

3735

38-
@cached(cache=TTLCache(maxsize=1, ttl=timedelta(minutes=1), timer=datetime.now))
39-
def ui_compatability_check():
40-
"""This method caches the service compartment OCID details that is set by either the environment variable or if
41-
fetched from the configuration. The cached result is returned when multiple calls are made in quick succession
42-
from the UI to avoid multiple config file loads."""
43-
return ODSC_MODEL_COMPARTMENT_OCID
44-
45-
4636
def get_default_error_messages(
4737
service_payload: dict,
4838
status_code: str,

ads/aqua/model/model.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from huggingface_hub import snapshot_download
1414
from oci.data_science.models import JobRun, Metadata, Model, UpdateModelDetails
1515

16-
from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID, logger
16+
from ads.aqua import logger
1717
from ads.aqua.app import AquaApp
1818
from ads.aqua.common.entities import AquaMultiModelRef
1919
from ads.aqua.common.enums import (
@@ -94,6 +94,7 @@
9494
AQUA_DEPLOYMENT_CONTAINER_URI_METADATA_NAME,
9595
AQUA_EVALUATION_CONTAINER_METADATA_NAME,
9696
AQUA_FINETUNING_CONTAINER_METADATA_NAME,
97+
AQUA_SERVICE_MODELS,
9798
COMPARTMENT_OCID,
9899
PROJECT_OCID,
99100
SERVICE,
@@ -181,7 +182,9 @@ def create(
181182
service_model = DataScienceModel.from_id(model_id)
182183
target_project = project_id or PROJECT_OCID
183184
target_compartment = compartment_id or COMPARTMENT_OCID
184-
if service_model.compartment_id != ODSC_MODEL_COMPARTMENT_OCID:
185+
186+
# Skip model copying if it is registered model
187+
if service_model.freeform_tags.get(Tags.BASE_MODEL_CUSTOM) is not None:
185188
logger.info(
186189
f"Aqua Model {model_id} already exists in the user's compartment."
187190
"Skipped copying."
@@ -949,11 +952,11 @@ def list(
949952
category="aqua/service/model", action="list"
950953
)
951954

952-
if ODSC_MODEL_COMPARTMENT_OCID in self._service_models_cache:
955+
if AQUA_SERVICE_MODELS in self._service_models_cache:
953956
logger.info(
954-
f"Returning service models list in {ODSC_MODEL_COMPARTMENT_OCID} from cache."
957+
f"Returning service models list in {AQUA_SERVICE_MODELS} from cache."
955958
)
956-
return self._service_models_cache.get(ODSC_MODEL_COMPARTMENT_OCID)
959+
return self._service_models_cache.get(AQUA_SERVICE_MODELS)
957960
logger.info("Fetching service models.")
958961
lifecycle_state = kwargs.pop(
959962
"lifecycle_state", Model.LIFECYCLE_STATE_ACTIVE
@@ -968,7 +971,7 @@ def list(
968971
)
969972

970973
logger.info(
971-
f"Fetched {len(models)} model in compartment_id={ODSC_MODEL_COMPARTMENT_OCID if category==SERVICE else compartment_id}."
974+
f"Fetched {len(models)} models from {AQUA_SERVICE_MODELS if category==SERVICE else compartment_id}."
972975
)
973976
aqua_models = []
974977
inference_containers = self.get_container_config().to_dict().get("inference")
@@ -986,7 +989,7 @@ def list(
986989

987990
if category == SERVICE:
988991
self._service_models_cache.__setitem__(
989-
key=ODSC_MODEL_COMPARTMENT_OCID, value=aqua_models
992+
key=AQUA_SERVICE_MODELS, value=aqua_models
990993
)
991994

992995
return aqua_models
@@ -1002,15 +1005,10 @@ def clear_model_list_cache(
10021005
"""
10031006
res = {}
10041007
with self._cache_lock:
1005-
if ODSC_MODEL_COMPARTMENT_OCID in self._service_models_cache:
1006-
self._service_models_cache.pop(key=ODSC_MODEL_COMPARTMENT_OCID)
1007-
logger.info(
1008-
f"Cleared models cache for service compartment {ODSC_MODEL_COMPARTMENT_OCID}."
1009-
)
1008+
if AQUA_SERVICE_MODELS in self._service_models_cache:
1009+
self._service_models_cache.pop(key=AQUA_SERVICE_MODELS)
1010+
logger.info("Cleared models cache for service compartment.")
10101011
res = {
1011-
"key": {
1012-
"compartment_id": ODSC_MODEL_COMPARTMENT_OCID,
1013-
},
10141012
"cache_deleted": True,
10151013
}
10161014
return res

ads/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python
22

3-
# Copyright (c) 2020, 2024 Oracle and/or its affiliates.
3+
# Copyright (c) 2020, 2025 Oracle and/or its affiliates.
44
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
55

66
import contextlib
@@ -56,6 +56,7 @@
5656
AQUA_CONTAINER_INDEX_CONFIG = os.environ.get(
5757
"AQUA_CONTAINER_INDEX_CONFIG", "container_index.json"
5858
)
59+
AQUA_SERVICE_MODELS = "aqua-service-models-compartment"
5960
AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME = "deployment-container"
6061
AQUA_FINETUNING_CONTAINER_METADATA_NAME = "finetune-container"
6162
AQUA_EVALUATION_CONTAINER_METADATA_NAME = "evaluation-container"
@@ -84,7 +85,6 @@
8485
SERVICE = "SERVICE"
8586

8687

87-
8888
THREADED_DEFAULT_TIMEOUT = 5
8989
try:
9090
THREADED_DEFAULT_TIMEOUT = int(

tests/unitary/with_extras/aqua/test_common_handler.py

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313

1414
import ads.aqua
1515
import ads.config
16-
from ads.aqua.constants import AQUA_GA_LIST
16+
1717
from ads.aqua.extension.common_handler import CompatibilityCheckHandler
18-
from ads.aqua.extension.utils import ui_compatability_check
1918

2019

2120
class TestDataset:
@@ -29,24 +28,17 @@ def setUp(self, ipython_init_mock) -> None:
2928
self.common_handler = CompatibilityCheckHandler(MagicMock(), MagicMock())
3029
self.common_handler.request = MagicMock()
3130

32-
def tearDown(self) -> None:
33-
ui_compatability_check.cache_clear()
34-
3531
def test_get_ok(self):
3632
"""Test to check if ok is returned when ODSC_MODEL_COMPARTMENT_OCID is set."""
37-
with patch.dict(
38-
os.environ,
39-
{"ODSC_MODEL_COMPARTMENT_OCID": TestDataset.SERVICE_COMPARTMENT_ID},
40-
):
41-
reload(ads.config)
42-
reload(ads.aqua)
43-
reload(ads.aqua.extension.utils)
44-
reload(ads.aqua.extension.common_handler)
45-
46-
with patch(
47-
"ads.aqua.extension.base_handler.AquaAPIhandler.finish"
48-
) as mock_finish:
49-
mock_finish.side_effect = lambda x: x
50-
self.common_handler.request.path = "aqua/hello"
51-
result = self.common_handler.get()
52-
assert result["status"] == "ok"
33+
reload(ads.config)
34+
reload(ads.aqua)
35+
reload(ads.aqua.extension.utils)
36+
reload(ads.aqua.extension.common_handler)
37+
38+
with patch(
39+
"ads.aqua.extension.base_handler.AquaAPIhandler.finish"
40+
) as mock_finish:
41+
mock_finish.side_effect = lambda x: x
42+
self.common_handler.request.path = "aqua/hello"
43+
result = self.common_handler.get()
44+
assert result["status"] == "ok"

tests/unitary/with_extras/aqua/test_model.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import ads.config
2626

2727
from ads.aqua.common.entities import AquaMultiModelRef
28-
from ads.aqua.common.enums import ModelFormat
28+
from ads.aqua.common.enums import ModelFormat, Tags
2929
from ads.aqua.common.errors import (
3030
AquaFileNotFoundError,
3131
AquaRuntimeError,
@@ -307,6 +307,7 @@ def test_create_model(self, mock_from_id, mock_validate, mock_create):
307307
"organization": "test_organization",
308308
"task": "test_task",
309309
"ready_to_fine_tune": "true",
310+
"aqua_custom_base_model": "true",
310311
}
311312
custom_metadata_list = ModelCustomMetadata()
312313
custom_metadata_list.add(
@@ -332,7 +333,7 @@ def test_create_model(self, mock_from_id, mock_validate, mock_create):
332333
mock_model.compartment_id = TestDataset.SERVICE_COMPARTMENT_ID
333334
mock_from_id.return_value = mock_model
334335
mock_create.return_value = mock_model
335-
336+
mock_model.freeform_tags.pop(Tags.BASE_MODEL_CUSTOM)
336337
# will copy service model
337338
model = self.app.create(
338339
model_id="test_model_id",

0 commit comments

Comments
 (0)