ansible/roles/test-hg-web/files/entrypoint.py (48 lines of code) (raw):
#!/usr/bin/python3 -u
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import print_function
import os
import subprocess
import sys
from configparser import ConfigParser
if "BROKER_ID" not in os.environ:
print("error: BROKER_ID not in environment", file=sys.stderr)
sys.exit(1)
if not os.path.exists("/etc/ssh/ssh_host_ed25519_key"):
subprocess.check_call(
[
"/usr/bin/ssh-keygen",
"-t",
"ed25519",
"-f",
"/etc/ssh/ssh_host_ed25519_key",
"-N",
"",
]
)
if not os.path.exists("/etc/ssh/ssh_host_rsa_key"):
subprocess.check_call(
[
"/usr/bin/ssh-keygen",
"-t",
"rsa",
"-b",
"2048",
"-f",
"/etc/ssh/ssh_host_rsa_key",
"-N",
"",
]
)
# Setup consumer group names
consumer_groupname = "hgweb%d" % (int(os.environ["BROKER_ID"]) - 1)
files = {
"/etc/mercurial/vcsreplicator.ini",
"/etc/mercurial/vcsreplicator-pending.ini",
}
for filename in files:
parser = ConfigParser()
parser.read(filename)
parser.set("consumer", "client_id", consumer_groupname)
parser.set("consumer", "group", consumer_groupname)
with open(filename, "w") as f:
parser.write(f)
subprocess.check_call(["/entrypoint-kafkabroker"])
os.execl(sys.argv[1], *sys.argv[1:])