Skip to content

Commit a33881c

Browse files
Compatibility check for Aqua extension and update compartment mapping config (#746)
1 parent 201302d commit a33881c

File tree

6 files changed

+48
-13
lines changed

6 files changed

+48
-13
lines changed

ads/aqua/__init__.py

+13
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,20 @@
66

77
import logging
88
import sys
9+
import os
10+
from ads.aqua.utils import fetch_service_compartment
11+
912

1013
logger = logging.getLogger(__name__)
1114
handler = logging.StreamHandler(sys.stdout)
1215
logger.setLevel(logging.INFO)
16+
17+
18+
ODSC_MODEL_COMPARTMENT_OCID = os.environ.get("ODSC_MODEL_COMPARTMENT_OCID")
19+
if not ODSC_MODEL_COMPARTMENT_OCID:
20+
try:
21+
ODSC_MODEL_COMPARTMENT_OCID = fetch_service_compartment()
22+
except:
23+
logger.error(
24+
"ODSC_MODEL_COMPARTMENT_OCID environment variable is not set for Aqua."
25+
)

ads/aqua/extension/common_handler.py

+15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from importlib import metadata
88

99
from ads.aqua.extension.base_handler import AquaAPIhandler
10+
from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID
11+
from ads.aqua.exception import AquaResourceAccessError
1012

1113

1214
class ADSVersionHandler(AquaAPIhandler):
@@ -16,6 +18,19 @@ def get(self):
1618
self.finish({"data": metadata.version("oracle_ads")})
1719

1820

21+
class CompatibilityCheckHandler(AquaAPIhandler):
22+
"""The handler to check if the extension is compatible."""
23+
24+
def get(self):
25+
if ODSC_MODEL_COMPARTMENT_OCID:
26+
return self.finish(dict(status="ok"))
27+
else:
28+
raise AquaResourceAccessError(
29+
f"The AI Quick actions extension is not compatible in the given region."
30+
)
31+
32+
1933
__handlers__ = [
2034
("ads_version", ADSVersionHandler),
35+
("hello", CompatibilityCheckHandler),
2136
]

ads/aqua/model.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@
4747
AQUA_SERVICE_MODELS_BUCKET,
4848
COMPARTMENT_OCID,
4949
CONDA_BUCKET_NS,
50-
ODSC_MODEL_COMPARTMENT_OCID,
5150
PROJECT_OCID,
5251
TENANCY_OCID,
5352
)
53+
from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID
5454
from ads.model import DataScienceModel
5555
from ads.model.model_metadata import MetadataTaxonomyKeys, ModelCustomMetadata
5656
from ads.telemetry import telemetry

ads/aqua/utils.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from ads.common.oci_resource import SEARCH_TYPE, OCIResource
3030
from ads.common.utils import get_console_link, upload_to_os
3131
from ads.config import (
32-
AQUA_CONFIG_FOLDER,
3332
AQUA_SERVICE_MODELS_BUCKET,
3433
CONDA_BUCKET_NS,
3534
TENANCY_OCID,
@@ -45,6 +44,7 @@
4544
README = "README.md"
4645
LICENSE_TXT = "config/LICENSE.txt"
4746
DEPLOYMENT_CONFIG = "deployment_config.json"
47+
COMPARTMENT_MAPPING_KEY = "service-model-compartment"
4848
CONTAINER_INDEX = "container_index.json"
4949
EVALUATION_REPORT_JSON = "report.json"
5050
EVALUATION_REPORT_MD = "report.md"
@@ -574,6 +574,22 @@ def get_container_image(
574574
return container_image
575575

576576

577+
def fetch_service_compartment():
578+
"""Loads the compartment mapping json from service bucket"""
579+
config_file_name = (
580+
f"oci://{AQUA_SERVICE_MODELS_BUCKET}@{CONDA_BUCKET_NS}/service_models/config"
581+
)
582+
583+
config = load_config(
584+
file_path=config_file_name,
585+
config_file_name=CONTAINER_INDEX,
586+
)
587+
compartment_mapping = config.get(COMPARTMENT_MAPPING_KEY)
588+
if compartment_mapping:
589+
return compartment_mapping.get(CONDA_BUCKET_NS)
590+
return None
591+
592+
577593
def get_max_version(versions):
578594
"""Takes in a list of versions and returns the higher version."""
579595
if not versions:

ads/config.py

-11
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,6 @@
8383
AQUA_SERVICE_NAME = "aqua"
8484
DATA_SCIENCE_SERVICE_NAME = "data-science"
8585

86-
compartment_mapping = {
87-
"idoaxnz5ar4s": "ocid1.compartment.oc1..aaaaaaaabxqyb6w4kj5y4fwwkc47auxdothlqc7jpm3zbah5aamflvp7th3q",
88-
"id19sfcrra6z": "ocid1.compartment.oc1..aaaaaaaasdur4tm5apdm6qyapaba7apdiyv22n2mwt6zquyubqevk3uo7nha",
89-
}
90-
default_compartment = compartment_mapping.get(CONDA_BUCKET_NS)
91-
ODSC_MODEL_COMPARTMENT_OCID = (
92-
default_compartment
93-
if default_compartment
94-
else os.environ.get("ODSC_MODEL_COMPARTMENT_OCID")
95-
)
96-
9786

9887
def export(
9988
uri: Optional[str] = DEFAULT_CONFIG_PATH,

tests/unitary/with_extras/aqua/test_model.py

+2
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,15 @@ def setUpClass(cls):
7878
os.environ["CONDA_BUCKET_NS"] = "test-namespace"
7979
os.environ["ODSC_MODEL_COMPARTMENT_OCID"] = TestDataset.SERVICE_COMPARTMENT_ID
8080
reload(ads.config)
81+
reload(ads.aqua)
8182
reload(ads.aqua.model)
8283

8384
@classmethod
8485
def tearDownClass(cls):
8586
os.environ.pop("CONDA_BUCKET_NS", None)
8687
os.environ.pop("ODSC_MODEL_COMPARTMENT_OCID", None)
8788
reload(ads.config)
89+
reload(ads.aqua)
8890
reload(ads.aqua.model)
8991

9092
def test_list_service_models(self):

0 commit comments

Comments
 (0)