Source code for cpdflow.config

"""
Configuration utilities.
"""

import logging

import ibm_cloud_sdk_core
import ibm_watson_machine_learning
import ibm_watson_openscale
from ibm_aigov_facts_client import AIGovFactsClient

from cpdflow.ws import ws
from cpdflow.wml import wml
from cpdflow.wos import wos
from cpdflow.wkc import wkc

_logger = logging.getLogger(__name__)


[docs]def init_config(config: dict) -> dict: """ Initialize configuration and return configuration dictionary. Refer to configuration link for configuration details. Args: configs (list[dict]): A list of dictionary with configurations for Cloud Pak for Data module Returns: dict: An initialize configuration dictionary """ _logger.info("CONFIG - START") config_ = config.values() config = {} for x in config_: config.update(x) wml_credentials = {"apikey": config["apikey"], "url": config["url"]} wml_client = ibm_watson_machine_learning.APIClient(wml_credentials) wos_client = ibm_watson_openscale.APIClient(authenticator=ibm_cloud_sdk_core.authenticators.IAMAuthenticator(apikey=config["apikey"])) config.update({"wml_client": wml_client, "wos_client": wos_client}) projects = ws.get_projects(config=config) config["project_id"] = projects[config["project_name"]] facts_client = AIGovFactsClient(api_key=config["apikey"], experiment_name="FactSheet Experiment", container_type="project", container_id=config["project_id"], set_as_current_experiment=True) config.update({"facts_client": facts_client}) spaces = wml.get_spaces(config=config) if "dev_space" in config: config["dev_space_id"] = spaces[config["dev_space"]] if "prod_space" in config: config["prod_space_id"] = spaces[config["prod_space"]] service_providers = wos.get_service_providers(config=config) config["dev_service_provider_id"] = service_providers[config["dev_service_provider"]] config["prod_service_provider_id"] = service_providers[config["prod_service_provider"]] if "custom_service_provider" in config: config["custom_service_provider_id"] = service_providers[config["custom_service_provider"]] catalogs = wkc.get_catalogs(config=config) config["catalog_id"] = catalogs[config["catalog_name"]] _logger.info("CONFIG - COMPLETED") return config