Source code for ads.opctl.backend.base

#!/usr/bin/env python
# -*- coding: utf-8; -*-

# Copyright (c) 2022, 2023 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

from abc import abstractmethod
from typing import Dict, Union


[docs] class UnsupportedRuntime(Exception): def __init__(self, runtime_type: str): super().__init__( f"The provided runtime: `{runtime_type}` " "is not supported by given resource." )
[docs] class Backend: """Interface for backend""" def __init__(self, config: Dict) -> None: self.config = config self.auth_type = config["execution"].get("auth", "api_key") self.profile = config["execution"].get("oci_profile", None) self.oci_config = config["execution"].get("oci_config", None)
[docs] @abstractmethod def run(self) -> Dict: """ Initiate a run. Returns ------- Dict """
[docs] def delete(self) -> None: """ Delete a remote run. Returns ------- None """
[docs] def watch(self) -> None: """ Stream logs from a remote run. Returns ------- None """
[docs] def cancel(self) -> None: """ Cancel a remote run. Returns ------- None """
[docs] def apply(self) -> Dict: """ Initiate Data Science service from YAML. Returns ------- Dict """
[docs] def activate(self) -> None: """ Activate a remote service. Returns ------- None """ raise NotImplementedError("`activate` has not been implemented yet.")
[docs] def deactivate(self) -> None: """ Deactivate a remote service. Returns ------- None """ raise NotImplementedError("`deactivate` has not been implemented yet.")
[docs] def run_diagnostics(self): """ Implement Diagnostics check appropriate for the backend """
[docs] def init( self, uri: Union[str, None] = None, overwrite: bool = False, **kwargs: Dict ) -> Union[str, None]: """Generates a YAML specification for the resource. Parameters ---------- overwrite: (bool, optional). Defaults to False. Overwrites the result specification YAML if exists. uri: (str, optional) The filename to save the resulting specification template YAML. **kwargs: Dict The optional arguments. runtime_type: str The resource runtime type. Returns ------- Union[str, None] The YAML specification for the given resource if `uri` was not provided. `None` otherwise. """ raise NotImplementedError( "The `init` has not been implemented yet for the given resource." )
[docs] def predict(self) -> None: """ Run model predict. Returns ------- None """ raise NotImplementedError("`predict` has not been implemented yet.")
[docs] class RuntimeFactory: """Base factory for runtime.""" _MAP = {}
[docs] @classmethod def get_runtime(cls, key: str, *args, **kwargs): if key not in cls._MAP: raise UnsupportedRuntime(key) return cls._MAP[key](*args, **kwargs)