from util.config.validators import BaseValidator, ConfigValidationException

class ActionLogArchivingValidator(BaseValidator):
  name = "actionlogarchiving"

  @classmethod
  def validate(cls, config, user, user_password):
    """ Validates the action log archiving configuration. """
    if not config.get('FEATURE_ACTION_LOG_ROTATION', False):
      return

    if not config.get('ACTION_LOG_ARCHIVE_PATH'):
      raise ConfigValidationException('Missing action log archive path')

    if not config.get('ACTION_LOG_ARCHIVE_LOCATION'):
      raise ConfigValidationException('Missing action log archive storage location')

    location = config['ACTION_LOG_ARCHIVE_LOCATION']
    storage_config = config.get('DISTRIBUTED_STORAGE_CONFIG') or {}
    if location not in storage_config:
      msg = 'Action log archive storage location `%s` not found in storage config' % location
      raise ConfigValidationException(msg)