from cloudcix.client import Client


class IAAS:
    """
    The IaaS application provides services that allow for management of IP Addresses, Subnets, and DNS records,
    along with accessing black and whitelists generated by CloudCIX and the direct management of CloudCIX Cloud
    infrastructure.
    """
    _application_name = 'iaas'

    allocation = Client(
        _application_name,
        'allocation/',
    )
    asn = Client(
        _application_name,
        'asn/',
    )
    blacklist = Client(
        _application_name,
        'cix_blacklist/',
    )
    cloud = Client(
        _application_name,
        'cloud/',
    )
    domain = Client(
        _application_name,
        'domain/',
    )
    image = Client(
        _application_name,
        'image/',
    )
    interface = Client(
        _application_name,
        'interface/',
    )
    ip_address = Client(
        _application_name,
        'ip_address/',
    )
    ipmi = Client(
        _application_name,
        'ipmi/',
    )
    ip_validator = Client(
        _application_name,
        'ip_validator/',
    )
    policy_log = Client(
        _application_name,
        'policy_log/{project_id}',
    )
    pool_ip = Client(
        _application_name,
        'pool_ip/',
    )
    project = Client(
        _application_name,
        'project/',
    )
    ptr_record = Client(
        _application_name,
        'ptr_record/',
    )
    record = Client(
        _application_name,
        'record/',
    )
    region_image = Client(
        _application_name,
        'region_image/',
    )
    router = Client(
        _application_name,
        'router/',
    )
    run_icarus = Client(
        _application_name,
        'run_icarus/',
    )
    run_robot = Client(
        _application_name,
        'run_robot/',
    )
    server = Client(
        _application_name,
        'server/',
    )
    server_type = Client(
        _application_name,
        'server_type/',
    )
    storage = Client(
        _application_name,
        'vm/{vm_id}/storage/',
    )
    storage_type = Client(
        _application_name,
        'storage_type/',
    )
    subnet = Client(
        _application_name,
        'subnet/',
    )
    subnet_space = Client(
        _application_name,
        'subnet_space/{allocation_id}/',
    )
    virtual_router = Client(
        _application_name,
        'virtual_router/',
    )
    vm = Client(
        _application_name,
        'vm/',
    )
    vm_history = Client(
        _application_name,
        'vm_history/',
    )
    vpn = Client(
        _application_name,
        'vpn/',
    )
    vpn_history = Client(
        _application_name,
        'vpn_history/',
    )
    whitelist = Client(
        _application_name,
        'cix_whitelist/',
    )
