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)
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]
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)