From eee1e9de6dc2be17bad9f36dd7aaa51b76d03e3a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lallement Date: Mon, 20 Sep 2021 19:29:10 +0200 Subject: [PATCH 1/2] Start server if not socket activated On systems without socket activation enabled, the client starts the server manually. Co-authored-by: Didier Roche --- system_setup/cmd/tui.py | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/system_setup/cmd/tui.py b/system_setup/cmd/tui.py index 92fb8c57..da6e17d4 100755 --- a/system_setup/cmd/tui.py +++ b/system_setup/cmd/tui.py @@ -89,31 +89,41 @@ def main(): from system_setup.client.client import SystemSetupClient parser = make_client_args_parser() args = sys.argv[1:] - # TODO: make that a common helper between subiquity and system_setup + + need_start_server = False + server_args = [] + server_output_dir = "/var/log/installer" if '--dry-run' in args: opts, unknown = parser.parse_known_args(args) if opts.socket is None: - os.makedirs('.subiquity', exist_ok=True) - sock_path = '.subiquity/socket' + need_start_server = True + server_output_dir = '/tmp/.subiquity' + sock_path = os.path.join(server_output_dir, 'socket') opts.socket = sock_path server_args = ['--dry-run', '--socket=' + sock_path] + unknown - server_parser = make_server_args_parser() - server_parser.parse_args(server_args) # just to check - server_output = open('.subiquity/server-output', 'w') - server_cmd = [sys.executable, '-m', 'system_setup.cmd.server'] + \ - server_args - server_proc = subprocess.Popen( - server_cmd, stdout=server_output, stderr=subprocess.STDOUT) - opts.server_pid = str(server_proc.pid) - print("running server pid {}".format(server_proc.pid)) - elif opts.server_pid is not None: - print("reconnecting to server pid {}".format(opts.server_pid)) else: opts = parser.parse_args(args) else: opts = parser.parse_args(args) if opts.socket is None: + need_start_server = True opts.socket = '/run/subiquity/socket' + + os.makedirs(server_output_dir, exist_ok=True) + server_output = open(os.path.join(server_output_dir, 'server-output'), 'w') + + if need_start_server: + server_parser = make_server_args_parser() + server_parser.parse_args(server_args) # just to check + server_cmd = [sys.executable, '-m', 'system_setup.cmd.server'] + \ + server_args + server_proc = subprocess.Popen( + server_cmd, stdout=server_output, stderr=subprocess.STDOUT) + opts.server_pid = str(server_proc.pid) + print("running server pid {}".format(server_proc.pid)) + elif opts.server_pid is not None: + print("reconnecting to server pid {}".format(opts.server_pid)) + os.makedirs(os.path.basename(opts.socket), exist_ok=True) logdir = LOGDIR if opts.dry_run: From 0a5b8fcf460ac7949700bc436b63a33aae89917a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lallement Date: Mon, 20 Sep 2021 19:30:36 +0200 Subject: [PATCH 2/2] Do not wait on cloud-init on system without cloud-init On systems where cloud-init cannot run (ie WSL) we where waiting forever on cloud-init Co-authored-by: Didier Roche --- system_setup/server/server.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system_setup/server/server.py b/system_setup/server/server.py index b73acf8e..f1ee4385 100644 --- a/system_setup/server/server.py +++ b/system_setup/server/server.py @@ -57,3 +57,8 @@ class SystemSetupServer(SubiquityServer): root = os.path.abspath('.subiquity') return SystemSetupModel(root, INSTALL_MODEL_NAMES, POSTINSTALL_MODEL_NAMES) + + # We don’t have cloudinit in system_setup. + async def wait_for_cloudinit(self): + self.cloud_init_ok = True + return