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}
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)
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}")
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)
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
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)
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
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)
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}"