Esempio n. 1
0
def get_localstack_logs() -> Union[str, Dict]:
    try:
        result = DOCKER_CLIENT.get_container_logs(get_main_container_name())
    except Exception as e:
        result = "error getting docker logs for container: %s" % e

    return {"docker": result}
Esempio n. 2
0
def get_main_endpoint_from_container():
    global DOCKER_MAIN_CONTAINER_IP
    if not config.HOSTNAME_FROM_LAMBDA and DOCKER_MAIN_CONTAINER_IP is None:
        DOCKER_MAIN_CONTAINER_IP = False
        container_name = bootstrap.get_main_container_name()
        try:
            if config.is_in_docker:
                DOCKER_MAIN_CONTAINER_IP = DOCKER_CLIENT.get_container_ipv4_for_network(
                    container_name_or_id=container_name,
                    container_network=get_container_network_for_lambda(),
                )
            else:
                # default gateway for the network should be the host
                # (only under Linux - otherwise fall back to DOCKER_HOST_FROM_CONTAINER below)
                if config.is_in_linux:
                    DOCKER_MAIN_CONTAINER_IP = DOCKER_CLIENT.inspect_network(
                        get_container_network_for_lambda(
                        ))["IPAM"]["Config"][0]["Gateway"]
            LOG.info("Determined main container target IP: %s",
                     DOCKER_MAIN_CONTAINER_IP)
        except Exception as e:
            LOG.info(
                'Unable to get IP address of main Docker container "%s": %s',
                container_name, e)
    # return (1) predefined endpoint host, or (2) main container IP, or (3) Docker host (e.g., bridge IP)
    return (config.HOSTNAME_FROM_LAMBDA or DOCKER_MAIN_CONTAINER_IP
            or config.DOCKER_HOST_FROM_CONTAINER)
Esempio n. 3
0
def print_docker_status(format):
    from localstack import config
    from localstack.utils import docker_utils
    from localstack.utils.bootstrap import (
        get_docker_image_details,
        get_main_container_ip,
        get_main_container_name,
        get_server_version,
    )

    img = get_docker_image_details()
    cont_name = config.MAIN_CONTAINER_NAME
    running = docker_utils.DOCKER_CLIENT.is_container_running(cont_name)
    status = DockerStatus(
        runtime_version=get_server_version(),
        image_tag=img["tag"],
        image_id=img["id"],
        image_created=img["created"],
        running=running,
    )
    if running:
        status["container_name"] = get_main_container_name()
        status["container_ip"] = get_main_container_ip()

    if format == "dict":
        console.print(status)
    if format == "table":
        print_docker_status_table(status)
    if format == "json":
        console.print(json.dumps(status))
    if format == "plain":
        for key, value in status.items():
            console.print(f"{key}={value}")
Esempio n. 4
0
def print_status():
    print('Base version:\t\t%s' % get_server_version())
    img = get_docker_image_details()
    print('Docker image:\t\tTag %s, ID %s, Created %s' % (img['tag'], img['id'], img['created']))
    cont_name = config.MAIN_CONTAINER_NAME
    running = docker_container_running(cont_name)
    cont_status = 'stopped'
    if running:
        cont_status = 'running (name: "%s", IP: %s)' % (get_main_container_name(), get_main_container_ip())
    print('Container status:\t%s' % cont_status)
Esempio n. 5
0
def get_container_network_for_lambda():
    global LAMBDA_CONTAINER_NETWORK
    if config.LAMBDA_DOCKER_NETWORK:
        return config.LAMBDA_DOCKER_NETWORK
    if LAMBDA_CONTAINER_NETWORK is None:
        try:
            if config.is_in_docker:
                networks = DOCKER_CLIENT.get_networks(
                    bootstrap.get_main_container_name())
                LAMBDA_CONTAINER_NETWORK = networks[0]
            else:
                LAMBDA_CONTAINER_NETWORK = (
                    "bridge"  # use the default bridge network in case of host mode
                )
            LOG.info("Determined lambda container network: %s",
                     LAMBDA_CONTAINER_NETWORK)
        except Exception as e:
            container_name = bootstrap.get_main_container_name()
            LOG.info('Unable to get network name of main container "%s": %s',
                     container_name, e)
    return LAMBDA_CONTAINER_NETWORK
def get_main_endpoint_from_container():
    global DOCKER_MAIN_CONTAINER_IP
    if DOCKER_MAIN_CONTAINER_IP is None:
        DOCKER_MAIN_CONTAINER_IP = False
        try:
            if in_docker():
                DOCKER_MAIN_CONTAINER_IP = bootstrap.get_main_container_ip()
                LOG.info('Determined main container target IP: %s' % DOCKER_MAIN_CONTAINER_IP)
        except Exception as e:
            container_name = bootstrap.get_main_container_name()
            LOG.info('Unable to get IP address of main Docker container "%s": %s' %
                (container_name, e))
    # return main container IP, or fall back to Docker host (bridge IP, or host DNS address)
    return DOCKER_MAIN_CONTAINER_IP or config.DOCKER_HOST_FROM_CONTAINER
Esempio n. 7
0
def print_status():
    print("Base version:\t\t%s" % get_server_version())
    img = get_docker_image_details()
    print("Docker image:\t\tTag %s, ID %s, Created %s" %
          (img["tag"], img["id"], img["created"]))
    cont_name = config.MAIN_CONTAINER_NAME
    running = docker_container_running(cont_name)
    cont_status = "stopped"
    if running:
        cont_status = 'running (name: "%s", IP: %s)' % (
            get_main_container_name(),
            get_main_container_ip(),
        )
    print("Container status:\t%s" % cont_status)
Esempio n. 8
0
def get_main_endpoint_from_container():
    global DOCKER_MAIN_CONTAINER_IP
    if not config.HOSTNAME_FROM_LAMBDA and DOCKER_MAIN_CONTAINER_IP is None:
        DOCKER_MAIN_CONTAINER_IP = False
        try:
            if in_docker():
                DOCKER_MAIN_CONTAINER_IP = bootstrap.get_main_container_ip()
                LOG.info('Determined main container target IP: %s' % DOCKER_MAIN_CONTAINER_IP)
        except Exception as e:
            container_name = bootstrap.get_main_container_name()
            LOG.info('Unable to get IP address of main Docker container "%s": %s' %
                (container_name, e))
    # return (1) predefined endpoint host, or (2) main container IP, or (3) Docker host (e.g., bridge IP)
    return config.HOSTNAME_FROM_LAMBDA or DOCKER_MAIN_CONTAINER_IP or config.DOCKER_HOST_FROM_CONTAINER
Esempio n. 9
0
def print_docker_status():
    from rich.table import Table

    from localstack import config
    from localstack.utils import docker_utils
    from localstack.utils.bootstrap import (
        get_docker_image_details,
        get_main_container_ip,
        get_main_container_name,
        get_server_version,
    )

    grid = Table(show_header=False)
    grid.add_column()
    grid.add_column()

    # version
    grid.add_row("Runtime version", "[bold]%s[/bold]" % get_server_version())

    # image
    img = get_docker_image_details()
    grid.add_row(
        "Docker image", "tag: %s, id: %s, :calendar: %s" %
        (img["tag"], img["id"], img["created"]))

    # container
    cont_name = config.MAIN_CONTAINER_NAME
    running = docker_utils.DOCKER_CLIENT.is_container_running(cont_name)
    cont_status = "[bold][red]:heavy_multiplication_x: stopped"
    if running:
        cont_status = '[bold][green]:heavy_check_mark: running[/green][/bold] (name: "[italic]%s[/italic]", IP: %s)' % (
            get_main_container_name(),
            get_main_container_ip(),
        )
    grid.add_row("Runtime status", cont_status)

    console.print(grid)
Esempio n. 10
0
def inspect_main_container() -> Union[str, Dict]:
    try:
        return DOCKER_CLIENT.inspect_container(get_main_container_name())
    except Exception as e:
        return f"inspect failed: {e}"