Skip to content

Commit b5a6c4d

Browse files
authored
Merge branch 'develop' into ODSC-40043/dataflow_archive
2 parents 854b819 + 85326a9 commit b5a6c4d

File tree

7 files changed

+499
-446
lines changed

7 files changed

+499
-446
lines changed

ads/common/oci_mixin.py

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import logging
1212
import os
1313
import re
14+
import time
1415
import traceback
1516
from datetime import date, datetime
1617
from typing import Callable, Optional, Union
@@ -20,7 +21,7 @@
2021
import yaml
2122
from ads.common import auth
2223
from ads.common.decorator.utils import class_or_instance_method
23-
from ads.common.utils import camel_to_snake
24+
from ads.common.utils import camel_to_snake, get_progress_bar
2425
from ads.config import COMPARTMENT_OCID
2526
from dateutil import tz
2627
from dateutil.parser import parse
@@ -29,6 +30,10 @@
2930
logger = logging.getLogger(__name__)
3031

3132
LIFECYCLE_STOP_STATE = ("SUCCEEDED", "FAILED", "CANCELED", "DELETED")
33+
WORK_REQUEST_STOP_STATE = ("SUCCEEDED", "FAILED", "CANCELED")
34+
DEFAULT_WAIT_TIME = 1200
35+
DEFAULT_POLL_INTERVAL = 10
36+
DEFAULT_WORKFLOW_STEPS = 2
3237

3338

3439
class MergeStrategy(Enum):
@@ -931,6 +936,76 @@ def get_work_request_response(
931936
)
932937
return work_request_response
933938

939+
def wait_for_progress(
940+
self,
941+
work_request_id: str,
942+
num_steps: int = DEFAULT_WORKFLOW_STEPS,
943+
max_wait_time: int = DEFAULT_WAIT_TIME,
944+
poll_interval: int = DEFAULT_POLL_INTERVAL
945+
):
946+
"""Waits for the work request progress bar to be completed.
947+
948+
Parameters
949+
----------
950+
work_request_id: str
951+
Work Request OCID.
952+
num_steps: (int, optional). Defaults to 2.
953+
Number of steps for the progress indicator.
954+
max_wait_time: int
955+
Maximum amount of time to wait in seconds (Defaults to 1200).
956+
Negative implies infinite wait time.
957+
poll_interval: int
958+
Poll interval in seconds (Defaults to 10).
959+
960+
Returns
961+
-------
962+
None
963+
"""
964+
work_request_logs = []
965+
966+
i = 0
967+
start_time = time.time()
968+
with get_progress_bar(num_steps) as progress:
969+
seconds_since = time.time() - start_time
970+
exceed_max_time = max_wait_time > 0 and seconds_since >= max_wait_time
971+
if exceed_max_time:
972+
logger.error(
973+
f"Max wait time ({max_wait_time} seconds) exceeded."
974+
)
975+
while not exceed_max_time and (not work_request_logs or len(work_request_logs) < num_steps):
976+
time.sleep(poll_interval)
977+
new_work_request_logs = []
978+
979+
try:
980+
work_request = self.client.get_work_request(work_request_id).data
981+
work_request_logs = self.client.list_work_request_logs(
982+
work_request_id
983+
).data
984+
except Exception as ex:
985+
logger.warn(ex)
986+
987+
new_work_request_logs = (
988+
work_request_logs[i:] if work_request_logs else []
989+
)
990+
991+
for wr_item in new_work_request_logs:
992+
progress.update(wr_item.message)
993+
i += 1
994+
995+
if work_request and work_request.status in WORK_REQUEST_STOP_STATE:
996+
if work_request.status != "SUCCEEDED":
997+
if new_work_request_logs:
998+
raise Exception(new_work_request_logs[-1].message)
999+
else:
1000+
raise Exception(
1001+
"Error occurred in attempt to perform the operation. "
1002+
"Check the service logs to get more details. "
1003+
f"{work_request}"
1004+
)
1005+
else:
1006+
break
1007+
progress.update("Done")
1008+
9341009

9351010
class OCIModelWithNameMixin:
9361011
"""Mixin class to operate OCI model which contains name property."""

ads/model/deployment/model_deployment.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,6 +1532,9 @@ def _build_model_deployment_configuration_details(self) -> Dict:
15321532
infrastructure.CONST_MEMORY_IN_GBS: infrastructure.shape_config_details.get(
15331533
"memory_in_gbs", None
15341534
)
1535+
or infrastructure.shape_config_details.get(
1536+
"memoryInGBs", None
1537+
)
15351538
or MODEL_DEPLOYMENT_INSTANCE_MEMORY_IN_GBS,
15361539
}
15371540

0 commit comments

Comments
 (0)