1 Star 0 Fork 42

songyanting/iSulad

forked from src-openEuler/iSulad 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0001-add-self-def-runtime-for-shimv2.patch 7.90 KB
一键复制 编辑 原始数据 按行查看 历史
wangfengtu 提交于 2021-12-02 17:07 . sync patches from upstream
From 717a0c83e3032c2255b257531cfd160b98cd8180 Mon Sep 17 00:00:00 2001
From: gaohuatao <gaohuatao@huawei.com>
Date: Tue, 16 Nov 2021 11:30:03 +0800
Subject: [PATCH 01/14] add self def runtime for shimv2
Signed-off-by: gaohuatao <gaohuatao@huawei.com>
---
CMakeLists.txt | 2 +-
iSulad.spec | 2 +-
src/contrib/config/daemon.json | 5 ++-
src/daemon/config/isulad_config.c | 3 ++
.../cri/cri_container_manager_service_impl.cc | 9 +++--
src/daemon/entry/cri/cri_helpers.cc | 39 +++++++++++++++++++
src/daemon/entry/cri/cri_helpers.h | 2 +
.../cri_pod_sandbox_manager_service_impl.cc | 5 ++-
8 files changed, 60 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cffc0dc..0f7d6b9c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,7 +104,7 @@ endif()
install(FILES src/contrib/config/daemon.json
DESTINATION ${conf_prefix}/isulad PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE)
install(FILES src/contrib/config/daemon_constants.json
- DESTINATION ${conf_prefix}/isulad PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE)
+ DESTINATION ${conf_prefix}/isulad PERMISSIONS OWNER_READ GROUP_READ)
install(FILES src/contrib/config/config.json src/contrib/config/systemcontainer_config.json
DESTINATION ${conf_prefix}/default/isulad PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE)
install(FILES src/contrib/config/seccomp_default.json
diff --git a/iSulad.spec b/iSulad.spec
index d6e5778c..c5fd802d 100644
--- a/iSulad.spec
+++ b/iSulad.spec
@@ -83,7 +83,7 @@ install -m 0644 ../src/daemon/modules/api/image_api.h %{buildroot}/%{_in
install -d $RPM_BUILD_ROOT/%{_sysconfdir}/isulad
install -m 0640 ../src/contrib/config/daemon.json %{buildroot}/%{_sysconfdir}/isulad/daemon.json
-install -m 0640 ../src/contrib/config/daemon_constants.json %{buildroot}/%{_sysconfdir}/isulad/daemon_constants.json
+install -m 0440 ../src/contrib/config/daemon_constants.json %{buildroot}/%{_sysconfdir}/isulad/daemon_constants.json
install -m 0640 ../src/contrib/config/seccomp_default.json %{buildroot}/%{_sysconfdir}/isulad/seccomp_default.json
install -d $RPM_BUILD_ROOT/%{_sysconfdir}/default/isulad
diff --git a/src/contrib/config/daemon.json b/src/contrib/config/daemon.json
index d2ce4d02..92cd6c47 100644
--- a/src/contrib/config/daemon.json
+++ b/src/contrib/config/daemon.json
@@ -33,5 +33,8 @@
"cni-conf-dir": "",
"image-layer-check": false,
"use-decrypted-key": true,
- "insecure-skip-verify-enforce": false
+ "insecure-skip-verify-enforce": false,
+ "cri-runtimes": {
+ "kata": "io.containerd.kata.v2"
+ }
}
diff --git a/src/daemon/config/isulad_config.c b/src/daemon/config/isulad_config.c
index ded3c0f6..f70b4575 100644
--- a/src/daemon/config/isulad_config.c
+++ b/src/daemon/config/isulad_config.c
@@ -1522,6 +1522,9 @@ int merge_json_confs_into_global(struct service_arguments *args)
args->json_confs->runtimes = tmp_json_confs->runtimes;
tmp_json_confs->runtimes = NULL;
+ args->json_confs->cri_runtimes = tmp_json_confs->cri_runtimes;
+ tmp_json_confs->cri_runtimes = NULL;
+
// Daemon storage-driver
if (merge_storage_conf_into_global(args, tmp_json_confs)) {
ret = -1;
diff --git a/src/daemon/entry/cri/cri_container_manager_service_impl.cc b/src/daemon/entry/cri/cri_container_manager_service_impl.cc
index ff98df9b..2e65ab51 100644
--- a/src/daemon/entry/cri/cri_container_manager_service_impl.cc
+++ b/src/daemon/entry/cri/cri_container_manager_service_impl.cc
@@ -296,8 +296,8 @@ auto ContainerManagerServiceImpl::GenerateCreateContainerCustomConfig(
if (containerConfig.has_metadata()) {
if (append_json_map_string_string(custom_config->annotations,
- CRIHelpers::Constants::CONTAINER_NAME_ANNOTATION_KEY.c_str(),
- containerConfig.metadata().name().c_str()) != 0) {
+ CRIHelpers::Constants::CONTAINER_NAME_ANNOTATION_KEY.c_str(),
+ containerConfig.metadata().name().c_str()) != 0) {
error.SetError("Append container name into annotation failed");
goto cleanup;
}
@@ -355,7 +355,10 @@ ContainerManagerServiceImpl::GenerateCreateContainerRequest(const std::string &r
request->id = util_strdup_s(cname.c_str());
if (!podSandboxRuntime.empty()) {
- request->runtime = util_strdup_s(podSandboxRuntime.c_str());
+ request->runtime = CRIHelpers::cri_runtime_convert(podSandboxRuntime.c_str());
+ if (request->runtime == nullptr) {
+ request->runtime = util_strdup_s(podSandboxRuntime.c_str());
+ }
}
if (!containerConfig.image().image().empty()) {
diff --git a/src/daemon/entry/cri/cri_helpers.cc b/src/daemon/entry/cri/cri_helpers.cc
index 137726e6..f45c669f 100644
--- a/src/daemon/entry/cri/cri_helpers.cc
+++ b/src/daemon/entry/cri/cri_helpers.cc
@@ -32,6 +32,7 @@
#include "path.h"
#include "utils.h"
#include "service_container_api.h"
+#include "isulad_config.h"
namespace CRIHelpers {
const std::string Constants::POD_NETWORK_ANNOTATION_KEY { "network.alpha.kubernetes.io/network" };
@@ -992,4 +993,42 @@ char *GenerateExecSuffix()
return exec_suffix;
}
+char *cri_runtime_convert(const char *runtime)
+{
+ char *runtime_val = nullptr;
+ json_map_string_string *cri_shimv2_runtimes = nullptr;
+
+ if (runtime == nullptr) {
+ return nullptr;
+ }
+
+ if (isulad_server_conf_rdlock()) {
+ ERROR("Lock isulad server conf failed");
+ return nullptr;
+ }
+
+ struct service_arguments *args = conf_get_server_conf();
+ if (args == nullptr || args->json_confs == nullptr || args->json_confs->cri_runtimes == nullptr) {
+ ERROR("Cannot get cri runtime list");
+ goto out;
+ }
+
+ cri_shimv2_runtimes = args->json_confs->cri_runtimes;
+ for (size_t i = 0; i < cri_shimv2_runtimes->len; i++) {
+ if (cri_shimv2_runtimes->keys[i] == nullptr || cri_shimv2_runtimes->values[i] == nullptr) {
+ WARN("CRI runtimes key or value is null");
+ continue;
+ }
+
+ if (strcmp(runtime, cri_shimv2_runtimes->keys[i]) == 0) {
+ runtime_val = util_strdup_s(cri_shimv2_runtimes->values[i]);
+ break;
+ }
+ }
+
+out:
+ (void)isulad_server_conf_unlock();
+ return runtime_val;
+}
+
} // namespace CRIHelpers
diff --git a/src/daemon/entry/cri/cri_helpers.h b/src/daemon/entry/cri/cri_helpers.h
index 450c899c..9eccc1da 100644
--- a/src/daemon/entry/cri/cri_helpers.h
+++ b/src/daemon/entry/cri/cri_helpers.h
@@ -150,6 +150,8 @@ void RemoveContainer(service_executor_t *cb, const std::string &containerID, Err
void StopContainer(service_executor_t *cb, const std::string &containerID, int64_t timeout, Errors &error);
char *GenerateExecSuffix();
+
+char *cri_runtime_convert(const char *runtime);
}; // namespace CRIHelpers
#endif // DAEMON_ENTRY_CRI_CRI_HELPERS_H
diff --git a/src/daemon/entry/cri/cri_pod_sandbox_manager_service_impl.cc b/src/daemon/entry/cri/cri_pod_sandbox_manager_service_impl.cc
index 8801bea6..0f9ef044 100644
--- a/src/daemon/entry/cri/cri_pod_sandbox_manager_service_impl.cc
+++ b/src/daemon/entry/cri/cri_pod_sandbox_manager_service_impl.cc
@@ -251,7 +251,10 @@ container_create_request *PodSandboxManagerServiceImpl::PackCreateContainerReque
create_request->id = util_strdup_s(sandboxName.c_str());
if (!runtimeHandler.empty()) {
- create_request->runtime = util_strdup_s(runtimeHandler.c_str());
+ create_request->runtime = CRIHelpers::cri_runtime_convert(runtimeHandler.c_str());
+ if (create_request->runtime == nullptr) {
+ create_request->runtime = util_strdup_s(runtimeHandler.c_str());
+ }
}
create_request->image = util_strdup_s(image.c_str());
--
2.25.1
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/songyanting1/iSulad.git
git@gitee.com:songyanting1/iSulad.git
songyanting1
iSulad
iSulad
master

搜索帮助