import os
import logging

from data.registry_model.registry_pre_oci_model import pre_oci_model
from data.registry_model.registry_oci_model import oci_model
from data.registry_model.modelsplitter import SplitModel

logger = logging.getLogger(__name__)


class RegistryModelProxy(object):
  def __init__(self):
    self._model = oci_model if os.getenv('OCI_DATA_MODEL') == 'true' else pre_oci_model

  def setup_split(self, oci_model_proportion, oci_whitelist, v22_whitelist):
    if os.getenv('OCI_DATA_MODEL') == 'true':
      return

    logger.info('===============================')
    logger.info('Split registry model: OCI %s proportion and whitelist `%s` and V22 whitelist `%s`',
                oci_model_proportion, oci_whitelist, v22_whitelist)
    logger.info('===============================')
    self._model = SplitModel(oci_model_proportion, oci_whitelist, v22_whitelist)

  def set_for_testing(self, use_oci_model):
    self._model = oci_model if use_oci_model else pre_oci_model
    logger.debug('Changed registry model to `%s` for testing', self._model)

  def __getattr__(self, attr):
    return getattr(self._model, attr)

registry_model = RegistryModelProxy()
logger.info('===============================')
logger.info('Using registry model `%s`', registry_model._model)
logger.info('===============================')