from typing import List
from risotto.utils import load_domains, DOMAINS
from risotto.utils import multi_function as _multi_function


@_multi_function
def get_ip(server_name: str) -> str:
    if server_name is None:
        return
    if isinstance(server_name, list):
        return_list = True
    else:
        return_list = False
        server_name = [server_name]
    lst = []
    for s_name in server_name:
        host_name, domain_name = s_name.split('.', 1)
        if not domain_name in DOMAINS:
            raise ValueError(f'cannot find IP in domain name "{domain_name}" (for "{s_name}")')
        domain = DOMAINS[domain_name]
        ret = domain[1][domain[0].index(host_name)]
        if not return_list:
            return ret
        if ret not in lst:
            lst.append(ret)
    return lst