Exemple #1
0
def main(argv=sys.argv, args=None) :
    """
    Builds a list of images
    """
    from . import commonSetUp
    if not args:
        import argparse
        parser = argparse.ArgumentParser()
        add_options(parser)
        args = parser.parse_args(argv[1:])
    import sys, os
    import yaml
    from docker import Client
    from . import commonSetUp
    commonSetUp(args)
    builder = Builder()
    builder.build(Client.from_env(), args.image)
    builder.tag(Client.from_env(), args.tag, args.image, registries=args.registry)
Exemple #2
0
def render_worker_config(type_: str) -> Path:
    # Fetch compose scale index
    client = Client.from_env()
    own_container_labels = next(
        container["Labels"] for container in client.containers()
        if container["Id"].startswith(os.environ["HOSTNAME"]))
    own_container_index = (int(
        own_container_labels.get("com.docker.compose.container-number"), 0) -
                           1)

    template_content = PATH_CONFIG_TEMPLATE_WORKER.read_text()
    rendered_content = string.Template(template_content).substitute(
        WORKER_APP=type_, WORKER_INDEX=own_container_index)
    target_file = PATH_CONFIG_WORKER_BASE.joinpath(
        f"{type_}_{own_container_index}.yaml")
    target_file.write_text(rendered_content)
    return target_file
def broker_node(broker_type):
    if broker_type == 'controller':
        broker = zk_query("/controller")['brokerid']
    else:
        state = zk_query("/brokers/topics/%s/partitions/0/state" % TEST_TOPIC)

        if broker_type == 'leader':
            broker = state['leader']
        else:
            assert len(state['isr']) > 1  # We need at least one follower isr
            broker = [isr for isr in state['isr']
                      if isr != state['leader']][0]  # Pick one

    containers = Client.from_env().containers(
        filters={'label': 'com.docker.compose.project'})
    broker_port = zk_query("/brokers/ids/%d" % broker)['port']
    for c in containers:
        if not c['Ports'] or 'PublicPort' not in c['Ports'][0]:
            pass  # Skip zookeeper, multiple ports, not all of them public
    docker_id = [
        c['Id'] for c in containers
        if c['Ports'] and c['Ports'][0].get('PublicPort') == broker_port
    ][0]
    return broker, docker_id[:12]
Exemple #4
0
def docker():
    if os.environ.get('DOCKER_MACHINE_IP') is not None:
        docker = DockerClient.from_env(assert_hostname=False)
    else:
        docker = DockerClient(version='auto')
    return docker
def take_down_kill(logger, docker_id):
    logger.info("## Kill -9 {}".format(docker_id))
    Client.from_env().remove_container(docker_id, force=True)
def take_down_disconnect(logger, docker_id):
    logger.info("## Disconnect {} from network".format(docker_id))
    Client.from_env().disconnect_container_from_network(docker_id,
                                                        "%s_default" %
                                                        PROJECT_NAME,
                                                        force=True)