From 3daa1126f63bf91799aed795a32dd3100026c679 Mon Sep 17 00:00:00 2001 From: Ravin Perera <33562092+ravinsp@users.noreply.github.com> Date: Sat, 23 Apr 2022 13:14:05 +0530 Subject: [PATCH] Sashi cli and rootless dockerd fixes (#122) * Fixed sashi cli create json construction issue * Properly applied rootless slirp4netns port driver. * Added dockerd max-concurrent-downloads. * Changed some debug logs to info. --- dependencies/user-install.sh | 16 ++++++++++++++-- sashi-cli/cli-manager.cpp | 2 +- sashi-cli/main.cpp | 2 +- src/hp_manager.cpp | 4 ++-- src/util/util.cpp | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/dependencies/user-install.sh b/dependencies/user-install.sh index 87f8061..594638c 100755 --- a/dependencies/user-install.sh +++ b/dependencies/user-install.sh @@ -143,9 +143,21 @@ fi echo "Installing rootless dockerd for user." sudo -H -u "$user" PATH="$docker_bin":"$PATH" XDG_RUNTIME_DIR="$user_runtime_dir" "$docker_bin"/dockerd-rootless-setuptool.sh install -mkdir "$user_dir"/.config/systemd/user/$docker_service.d +# Add environment variables as an override to docker service unit file. +echo "Applying $docker_service env overrides." +sudo -H -u "$user" mkdir $user_dir/.config/systemd/user/$docker_service.d +sudo -H -u "$user" touch $user_dir/.config/systemd/user/$docker_service.d/override.conf echo "[Service] - Environment='DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns'" >"$user_dir"/.config/systemd/user/$docker_service.d/override.conf + Environment=DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns" > $user_dir/.config/systemd/user/$docker_service.d/override.conf + +# Overwrite docker-rootless cli args on the docker service unit file (ExecStart is not supported by override.conf). +echo "Applying $docker_service extra args." +exec_original="ExecStart=$docker_bin/dockerd-rootless.sh" +exec_replace="$exec_original --max-concurrent-downloads 1" +sed -i "s%$exec_original%$exec_replace%" $user_dir/.config/systemd/user/$docker_service + +# Reload the docker service. +sudo -u "$user" XDG_RUNTIME_DIR="$user_runtime_dir" systemctl --user daemon-reload sudo -u "$user" XDG_RUNTIME_DIR="$user_runtime_dir" systemctl --user restart $docker_service service_ready $docker_service || rollback "NO_DOCKERSVC" diff --git a/sashi-cli/cli-manager.cpp b/sashi-cli/cli-manager.cpp index dc2d003..1d15348 100644 --- a/sashi-cli/cli-manager.cpp +++ b/sashi-cli/cli-manager.cpp @@ -199,7 +199,7 @@ namespace cli int create(std::string_view container_name, std::string_view owner, std::string_view contract_id, std::string_view image) { std::string msg, output; - msg.resize(96 + owner.size() + contract_id.size() + image.size()); + msg.resize(95 + container_name.size() + owner.size() + contract_id.size() + image.size()); sprintf(msg.data(), MSG_CREATE, container_name.data(), owner.data(), contract_id.data(), image.data()); const int ret = get_json_output(msg, output); diff --git a/sashi-cli/main.cpp b/sashi-cli/main.cpp index 72f107a..56891ea 100644 --- a/sashi-cli/main.cpp +++ b/sashi-cli/main.cpp @@ -161,7 +161,7 @@ int parse_cmd(int argc, char **argv) return 0; }); } - else if (create->parsed() && !contract_id.empty() && !image.empty()) + else if (create->parsed() && !container_name.empty() && !owner.empty() && !contract_id.empty() && !image.empty()) { return execute_cli([&]() { return cli::create(container_name, owner, contract_id, image); }); diff --git a/src/hp_manager.cpp b/src/hp_manager.cpp index 07a90d8..378dc7a 100644 --- a/src/hp_manager.cpp +++ b/src/hp_manager.cpp @@ -876,7 +876,7 @@ namespace hp return -1; } username = output_params.at(1); - LOG_DEBUG << "Created new user : " << username << ", uid : " << user_id; + LOG_INFO << "Created new user : " << username << ", uid : " << user_id; return 0; } else if (strncmp(output_params.at(output_params.size() - 1).data(), "INST_ERR", 8) == 0) // If error. @@ -913,7 +913,7 @@ namespace hp // const std::string contract_dir = util::get_user_contract_dir(info.username, container_name); if (strncmp(output_params.at(output_params.size() - 1).data(), "UNINST_SUC", 8) == 0) // If success. { - LOG_DEBUG << "Deleted the user : " << username; + LOG_INFO << "Deleted the user : " << username; return 0; } if (strncmp(output_params.at(output_params.size() - 1).data(), "UNINST_ERR", 8) == 0) // If error. diff --git a/src/util/util.cpp b/src/util/util.cpp index 2f0af01..4397996 100644 --- a/src/util/util.cpp +++ b/src/util/util.cpp @@ -451,7 +451,7 @@ namespace util { if (output.back() == '\n') output.pop_back(); - LOG_DEBUG << output; + LOG_INFO << output; } }