From 8288e3232085ce991a4ddb09eff1d607078d448c Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Wed, 29 Aug 2018 13:34:45 +0200 Subject: lavalab-gen.py: change default start port for ser2net ser2net port range started from 60000 which is between the Linux dynamic port range: 32768-60999 This patch changes it outside of this range to 63001. --- lavalab-gen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lavalab-gen.py b/lavalab-gen.py index b327813..34c947d 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -12,6 +12,7 @@ import shutil boards_yaml = "boards.yaml" tokens_yaml = "tokens.yaml" baud_default = 115200 +ser2net_port_start = 63001 template_conmux = string.Template("""# # auto-generated by lavalab-gen.py for ${board} @@ -326,7 +327,7 @@ def main(): if "boards" not in workers: print("Missing boards") sys.exit(1) - ser2net_port = 60000 + ser2net_port = ser2net_port_start boards = workers["boards"] for board in boards: board_name = board["name"] -- cgit 1.2.3-korg From c4e7d2900d89ec811d44f9eb2a41a5086f3c8b8e Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Wed, 29 Aug 2018 13:51:26 +0200 Subject: lava-slave/Dockerfile: install recent ser2net Current ser2net present in debian is too old, we need at least the 3.2 release for having the multiple connection support. This patch download, compile and install ser2net 3.5 --- lava-slave/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lava-slave/Dockerfile b/lava-slave/Dockerfile index e07c01e..cbaafdc 100644 --- a/lava-slave/Dockerfile +++ b/lava-slave/Dockerfile @@ -22,6 +22,13 @@ RUN rm /etc/apt/sources.list.d/testing.list RUN apt-get -y install ser2net COPY ser2net.conf /etc +# ser2net > 3.2 is only availlable from sid +RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list.d/sid.list +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install ser2net +RUN rm /etc/apt/sources.list.d/sid.list +RUN apt-get update + # lava-cli dependencies RUN apt-get -y install python3-setuptools python3-dev python3-zmq RUN git clone https://git.linaro.org/lava/lavacli.git /root/lavacli && cd /root/lavacli && git checkout v0.7 && python3 setup.py install -- cgit 1.2.3-korg From e010e54db9afbf8c7b1315ec6e998649f12a2558 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Wed, 29 Aug 2018 13:38:56 +0200 Subject: lavalab-gen.py: add default max-connections for ser2net This patch add a ser2net max-connections for all boards --- README.md | 1 + lavalab-gen.py | 39 ++++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 678fddb..1d43a34 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,7 @@ slaves: remote_user: the user used for connecting to the master remote_proto: http(default) or https default_slave: Does this slave is the default slave where to add boards (default: lab-slave-0) + export_ser2net: Do ser2net ports need to be available on host extra_actions: An optional list of action to do at end of the docker build - "apt-get install package" diff --git a/lavalab-gen.py b/lavalab-gen.py index 34c947d..010839f 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -13,6 +13,7 @@ boards_yaml = "boards.yaml" tokens_yaml = "tokens.yaml" baud_default = 115200 ser2net_port_start = 63001 +ser2net_ports = {} template_conmux = string.Template("""# # auto-generated by lavalab-gen.py for ${board} @@ -220,7 +221,7 @@ def main(): sys.exit(1) slaves = workers["slaves"] for slave in slaves: - keywords_slaves = [ "name", "host", "dispatcher_ip", "remote_user", "remote_master", "remote_address", "remote_rpc_port", "remote_proto", "extra_actions", "zmq_auth_key", "zmq_auth_key_secret", "default_slave" ] + keywords_slaves = [ "name", "host", "dispatcher_ip", "remote_user", "remote_master", "remote_address", "remote_rpc_port", "remote_proto", "extra_actions", "zmq_auth_key", "zmq_auth_key_secret", "default_slave", "export_ser2net" ] for keyword in slave: if not keyword in keywords_slaves: print("WARNING: unknown keyword %s" % keyword) @@ -327,7 +328,6 @@ def main(): if "boards" not in workers: print("Missing boards") sys.exit(1) - ser2net_port = ser2net_port_start boards = workers["boards"] for board in boards: board_name = board["name"] @@ -419,9 +419,14 @@ def main(): fp.write(conmuxline) fp.close() if use_ser2net: - ser2net_line = template_ser2net.substitute(port=ser2net_port,baud=baud,board=board_name) - device_line += template_device_ser2net.substitute(port=ser2net_port) - ser2net_port += 1 + if not worker_name in ser2net_ports: + ser2net_ports[worker_name] = ser2net_port_start + fp = open("%s/ser2net.conf" % workerdir, "a") + fp.write("DEFAULT:max-connections:10") + fp.close() + ser2net_line = template_ser2net.substitute(port=ser2net_ports[worker_name],baud=baud,board=board_name) + device_line += template_device_ser2net.substitute(port=ser2net_ports[worker_name]) + ser2net_ports[worker_name] += 1 fp = open("%s/ser2net.conf" % workerdir, "a") fp.write(ser2net_line) fp.close() @@ -454,6 +459,30 @@ def main(): fp.close() with open(dockcomposeymlpath, 'w') as f: yaml.dump(dockcomp, f) + #end for board + + for slave_name in ser2net_ports: + export_ser2net = False + for fs in workers["slaves"]: + if fs["name"] == slave_name: + if not "host" in fs: + host = "local" + else: + host = fs["host"] + if "export_ser2net" in fs: + export_ser2net = fs["export_ser2net"] + if not export_ser2net: + continue + print("Add ser2net ports for %s (%s) %s-%s" % (slave_name, host, ser2net_port_start, ser2net_ports[slave_name])) + dockcomposeymlpath = "output/%s/docker-compose.yml" % host + fp = open(dockcomposeymlpath, "r") + dockcomp = yaml.load(fp) + fp.close() + ser2net_port_max = ser2net_ports[slave_name] - 1 + dockcomp["services"][slave_name]["ports"].append("%s-%s:%s-%s" % (ser2net_port_start, ser2net_port_max, ser2net_port_start, ser2net_port_max)) + with open(dockcomposeymlpath, 'w') as f: + yaml.dump(dockcomp, f) + zmq_auth_genlist.close() if need_zmq_auth_gen: print("Gen ZMQ auth files") -- cgit 1.2.3-korg