from aws.constants import PRODUCTION, PROD_ENVS, US_EU_PRODUCTION, DEV_ENVS
from github.env import exit_on_error_and_write_summary

def get_msk_environment_name(env_name: str) ->str:
    if not env_name:
        raise ValueError(f"environment name for MSK connector must be provided")
    msk_connector_env_name = env_name
    if env_name in PROD_ENVS:
        msk_connector_env_name = PRODUCTION
    return msk_connector_env_name

def get_kafka_resource_arn_list(env_name: str, aws_region: str, aws_account_id: str) ->str:
    if not env_name:
        raise ValueError(f"environment name must be provided")
    if not aws_region:
        raise ValueError(f"AWS region must be provided")
    if not aws_account_id:
        raise ValueError(f"AWS account id must be provided")
    kafka_prefix = env_name
    if env_name in PROD_ENVS:
        kafka_prefix = PRODUCTION
    if env_name in DEV_ENVS:
        kafka_prefix = "qa"
    kafka_resource_arn_list = [
            f"arn:aws:kafka:{aws_region}:{aws_account_id}:cluster/{kafka_prefix}-kafka/*",
            f"arn:aws:kafka:{aws_region}:{aws_account_id}:topic/{kafka_prefix}-kafka/*",
            f"arn:aws:kafka:{aws_region}:{aws_account_id}:group/{kafka_prefix}-kafka/*"
        ]
    return kafka_resource_arn_list

def get_msk_connector_role_name(env_name: str, connector_name: str) -> str:
    if not env_name:
        raise ValueError(f"environment name for MSK connector must be provided")
    if not connector_name:
        raise ValueError(f"connector name for MSK connector must be provided")
    role_env_name = env_name
    if env_name in US_EU_PRODUCTION:
        role_env_name = PRODUCTION
    return f"{role_env_name}-{connector_name}"
