Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
iSulad
提交
8c0ee03e
I
iSulad
项目概览
openeuler
/
iSulad
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
iSulad
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8c0ee03e
编写于
8月 06, 2020
作者:
O
openeuler-ci-bot
提交者:
Gitee
8月 06, 2020
浏览文件
操作
浏览文件
下载
差异文件
!632 refector: fix cri code according to coding standards
Merge pull request !632 from JingWoo/master
上级
b670ba5a
34cb6236
变更
16
展开全部
隐藏空白更改
内联
并排
Showing
16 changed file
with
433 addition
and
424 deletion
+433
-424
src/daemon/entry/cri/checkpoint_handler.cc
src/daemon/entry/cri/checkpoint_handler.cc
+16
-16
src/daemon/entry/cri/checkpoint_handler.h
src/daemon/entry/cri/checkpoint_handler.h
+12
-12
src/daemon/entry/cri/cni_network_plugin.cc
src/daemon/entry/cri/cni_network_plugin.cc
+33
-32
src/daemon/entry/cri/cni_network_plugin.h
src/daemon/entry/cri/cni_network_plugin.h
+24
-24
src/daemon/entry/cri/cri_container.h
src/daemon/entry/cri/cri_container.h
+1
-1
src/daemon/entry/cri/cri_helpers.cc
src/daemon/entry/cri/cri_helpers.cc
+47
-44
src/daemon/entry/cri/cri_helpers.h
src/daemon/entry/cri/cri_helpers.h
+33
-31
src/daemon/entry/cri/cri_image_service.cc
src/daemon/entry/cri/cri_image_service.cc
+28
-31
src/daemon/entry/cri/cri_image_service.h
src/daemon/entry/cri/cri_image_service.h
+6
-3
src/daemon/entry/cri/cri_runtime_service.cc
src/daemon/entry/cri/cri_runtime_service.cc
+16
-17
src/daemon/entry/cri/cri_runtime_service.h
src/daemon/entry/cri/cri_runtime_service.h
+95
-89
src/daemon/entry/cri/cri_sandbox.cc
src/daemon/entry/cri/cri_sandbox.cc
+92
-90
src/daemon/entry/cri/cri_sandbox.h
src/daemon/entry/cri/cri_sandbox.h
+1
-1
src/daemon/entry/cri/cri_security_context.cc
src/daemon/entry/cri/cri_security_context.cc
+10
-15
src/daemon/entry/cri/cri_security_context.h
src/daemon/entry/cri/cri_security_context.h
+2
-2
src/daemon/entry/cri/cri_services.h
src/daemon/entry/cri/cri_services.h
+17
-16
未找到文件。
src/daemon/entry/cri/checkpoint_handler.cc
浏览文件 @
8c0ee03e
...
...
@@ -15,20 +15,20 @@
#include "checkpoint_handler.h"
#include <cstring>
#include <errno.h>
#include <linux/limits.h>
#include <memory>
#include <string>
#include <linux/limits.h>
#include <unistd.h>
#include <errno.h>
#include "constants.h"
#include "utils.h"
#include "isula_libutils/log.h"
#include "cri_helpers.h"
#include "isula_libutils/cri_checkpoint.h"
#include "isula_libutils/log.h"
#include "utils.h"
namespace
cri
{
PortMapping
&
PortMapping
::
operator
=
(
const
PortMapping
&
obj
)
auto
PortMapping
::
operator
=
(
const
PortMapping
&
obj
)
->
PortMapping
&
{
if
(
&
obj
==
this
)
{
return
*
this
;
...
...
@@ -74,7 +74,7 @@ PortMapping::~PortMapping()
delete
m_hostPort
;
}
const
std
::
string
*
PortMapping
::
GetProtocol
()
const
auto
PortMapping
::
GetProtocol
()
const
->
const
std
::
string
*
{
return
m_protocol
;
}
...
...
@@ -87,7 +87,7 @@ void PortMapping::SetProtocol(const std::string &protocol)
}
}
const
int32_t
*
PortMapping
::
GetContainerPort
()
const
auto
PortMapping
::
GetContainerPort
()
const
->
const
int32_t
*
{
return
m_containerPort
;
}
...
...
@@ -101,7 +101,7 @@ void PortMapping::SetContainerPort(int32_t containerPort)
}
}
const
int32_t
*
PortMapping
::
GetHostPort
()
const
auto
PortMapping
::
GetHostPort
()
const
->
const
int32_t
*
{
return
m_hostPort
;
}
...
...
@@ -168,7 +168,7 @@ void PortMapping::CStructToPortMapping(const cri_port_mapping *pmapping, Errors
}
}
const
std
::
vector
<
PortMapping
>
&
CheckpointData
::
GetPortMappings
()
const
auto
CheckpointData
::
GetPortMappings
()
const
->
const
std
::
vector
<
PortMapping
>
&
{
return
m_portMappings
;
}
...
...
@@ -178,7 +178,7 @@ void CheckpointData::InsertPortMapping(const PortMapping &portMapping)
m_portMappings
.
push_back
(
portMapping
);
}
bool
CheckpointData
::
GetHostNetwork
()
auto
CheckpointData
::
GetHostNetwork
()
const
->
bool
{
return
m_hostNetwork
;
}
...
...
@@ -232,7 +232,7 @@ void CheckpointData::CStructToCheckpointData(const cri_checkpoint_data *data, Er
return
;
}
m_hostNetwork
=
data
->
host_network
;
if
(
data
->
port_mappings
&&
data
->
port_mappings_len
>
0
)
{
if
(
(
data
->
port_mappings
!=
nullptr
)
&&
data
->
port_mappings_len
>
0
)
{
for
(
size_t
i
=
0
;
i
<
data
->
port_mappings_len
;
i
++
)
{
PortMapping
tmpPortMap
;
tmpPortMap
.
CStructToPortMapping
(
data
->
port_mappings
[
i
],
error
);
...
...
@@ -248,7 +248,7 @@ out:
m_portMappings
.
clear
();
}
const
std
::
string
&
PodSandboxCheckpoint
::
GetVersion
()
const
auto
PodSandboxCheckpoint
::
GetVersion
()
const
->
const
std
::
string
&
{
return
m_version
;
}
...
...
@@ -258,7 +258,7 @@ void PodSandboxCheckpoint::SetVersion(const std::string &version)
m_version
=
version
;
}
const
std
::
string
&
PodSandboxCheckpoint
::
GetName
()
const
auto
PodSandboxCheckpoint
::
GetName
()
const
->
const
std
::
string
&
{
return
m_name
;
}
...
...
@@ -268,7 +268,7 @@ void PodSandboxCheckpoint::SetName(const std::string &name)
m_name
=
name
;
}
const
std
::
string
&
PodSandboxCheckpoint
::
GetNamespace
()
const
auto
PodSandboxCheckpoint
::
GetNamespace
()
const
->
const
std
::
string
&
{
return
m_namespace
;
}
...
...
@@ -278,7 +278,7 @@ void PodSandboxCheckpoint::SetNamespace(const std::string &ns)
m_namespace
=
ns
;
}
std
::
shared_ptr
<
CheckpointData
>
PodSandboxCheckpoint
::
GetData
()
auto
PodSandboxCheckpoint
::
GetData
()
->
std
::
shared_ptr
<
CheckpointData
>
{
return
m_data
;
}
...
...
@@ -288,7 +288,7 @@ void PodSandboxCheckpoint::SetData(CheckpointData *data)
m_data
=
std
::
shared_ptr
<
CheckpointData
>
(
data
);
}
const
std
::
string
&
PodSandboxCheckpoint
::
GetCheckSum
()
const
auto
PodSandboxCheckpoint
::
GetCheckSum
()
const
->
const
std
::
string
&
{
return
m_checkSum
;
}
...
...
src/daemon/entry/cri/checkpoint_handler.h
浏览文件 @
8c0ee03e
...
...
@@ -14,9 +14,9 @@
*********************************************************************************/
#ifndef DAEMON_ENTRY_CRI_CHECKPOINT_HANDLER_H
#define DAEMON_ENTRY_CRI_CHECKPOINT_HANDLER_H
#include <memory>
#include <string>
#include <vector>
#include <memory>
#include "errors.h"
#include "isula_libutils/cri_checkpoint.h"
...
...
@@ -28,16 +28,16 @@ class PortMapping {
public:
PortMapping
()
=
default
;
PortMapping
(
const
PortMapping
&
obj
);
PortMapping
&
operator
=
(
const
PortMapping
&
)
;
auto
operator
=
(
const
PortMapping
&
)
->
PortMapping
&
;
~
PortMapping
();
void
PortMappingToCStruct
(
cri_port_mapping
**
pmapping
,
Errors
&
error
);
void
CStructToPortMapping
(
const
cri_port_mapping
*
pmapping
,
Errors
&
error
);
const
std
::
string
*
GetProtocol
()
const
;
auto
GetProtocol
()
const
->
const
std
::
string
*
;
void
SetProtocol
(
const
std
::
string
&
protocol
);
const
int32_t
*
GetContainerPort
()
const
;
auto
GetContainerPort
()
const
->
const
int32_t
*
;
void
SetContainerPort
(
int32_t
containerPort
);
const
int32_t
*
GetHostPort
()
const
;
auto
GetHostPort
()
const
->
const
int32_t
*
;
void
SetHostPort
(
int32_t
hostPort
);
private:
...
...
@@ -51,9 +51,9 @@ public:
void
CheckpointDataToCStruct
(
cri_checkpoint_data
**
data
,
Errors
&
error
);
void
CStructToCheckpointData
(
const
cri_checkpoint_data
*
data
,
Errors
&
error
);
const
std
::
vector
<
PortMapping
>
&
GetPortMappings
()
const
;
auto
GetPortMappings
()
const
->
const
std
::
vector
<
PortMapping
>
&
;
void
InsertPortMapping
(
const
PortMapping
&
portMapping
);
bool
GetHostNetwork
()
;
auto
GetHostNetwork
()
const
->
bool
;
void
SetHostNetwork
(
bool
hostNetwork
);
private:
...
...
@@ -68,15 +68,15 @@ public:
void
CheckpointToCStruct
(
cri_checkpoint
**
checkpoint
,
Errors
&
error
);
void
CStructToCheckpoint
(
const
cri_checkpoint
*
checkpoint
,
Errors
&
error
);
const
std
::
string
&
GetVersion
()
const
;
auto
GetVersion
()
const
->
const
std
::
string
&
;
void
SetVersion
(
const
std
::
string
&
version
);
const
std
::
string
&
GetName
()
const
;
auto
GetName
()
const
->
const
std
::
string
&
;
void
SetName
(
const
std
::
string
&
name
);
const
std
::
string
&
GetNamespace
()
const
;
auto
GetNamespace
()
const
->
const
std
::
string
&
;
void
SetNamespace
(
const
std
::
string
&
ns
);
std
::
shared_ptr
<
CheckpointData
>
GetData
()
;
auto
GetData
()
->
std
::
shared_ptr
<
CheckpointData
>
;
void
SetData
(
CheckpointData
*
data
);
const
std
::
string
&
GetCheckSum
()
const
;
auto
GetCheckSum
()
const
->
const
std
::
string
&
;
void
SetCheckSum
(
const
std
::
string
&
checkSum
);
private:
...
...
src/daemon/entry/cri/cni_network_plugin.cc
浏览文件 @
8c0ee03e
...
...
@@ -13,21 +13,22 @@
* Description: provide cni network plugin function definition
**********************************************************************************/
#include "cni_network_plugin.h"
#include <iostream>
#include <memory>
#include <algorithm>
#include <vector>
#include <chrono>
#include <iostream>
#include <utility>
#include <memory>
#include <set>
#include <chrono>
#include <utility>
#include <vector>
#include "cri_helpers.h"
#include "cxxutils.h"
#include "isula_libutils/log.h"
#include "utils.h"
#include "cri_helpers.h"
namespace
Network
{
static
std
::
unique_ptr
<
CNINetwork
>
GetLoNetwork
(
std
::
vector
<
std
::
string
>
binDirs
,
const
std
::
string
&
vendorDirPrefix
)
static
auto
GetLoNetwork
(
std
::
vector
<
std
::
string
>
binDirs
)
->
std
::
unique_ptr
<
CNINetwork
>
{
const
std
::
string
loNetConfListJson
{
"{
\"
cniVersion
\"
:
\"
0.3.0
\"
,
\"
name
\"
:
\"
cni-loopback
\"
,"
"
\"
plugins
\"
:[{
\"
type
\"
:
\"
loopback
\"
}]}"
};
...
...
@@ -44,7 +45,7 @@ static std::unique_ptr<CNINetwork> GetLoNetwork(std::vector<std::string> binDirs
char
**
traces
=
get_backtrace
();
if
(
traces
!=
nullptr
)
{
ERROR
(
"show backtrace: "
);
for
(
char
**
sym
=
traces
;
sym
&&
*
sym
;
sym
++
)
{
for
(
char
**
sym
=
traces
;
(
sym
!=
nullptr
)
&&
(
*
sym
!=
nullptr
)
;
sym
++
)
{
ERROR
(
"%s"
,
*
sym
);
}
util_free_array
(
traces
);
...
...
@@ -75,7 +76,7 @@ CNINetwork::~CNINetwork()
free_cni_network_list_conf
(
m_networkConfig
);
}
char
**
CNINetwork
::
GetPaths
(
Errors
&
err
)
auto
CNINetwork
::
GetPaths
(
Errors
&
err
)
->
char
**
{
char
**
paths
=
CRIHelpers
::
StringVectorToCharArray
(
m_path
);
if
(
paths
==
nullptr
)
{
...
...
@@ -90,7 +91,7 @@ void ProbeNetworkPlugins(const std::string &pluginDir, const std::string &binDir
const
std
::
string
useBinDir
=
binDir
.
empty
()
?
DEFAULT_CNI_DIR
:
binDir
;
std
::
vector
<
std
::
string
>
binDirs
=
CXXUtils
::
Split
(
useBinDir
,
','
);
auto
plugin
=
std
::
make_shared
<
CniNetworkPlugin
>
(
binDirs
,
pluginDir
);
plugin
->
SetLoNetwork
(
GetLoNetwork
(
binDirs
,
""
));
plugin
->
SetLoNetwork
(
GetLoNetwork
(
binDirs
));
plugins
->
push_back
(
plugin
);
}
...
...
@@ -151,10 +152,10 @@ void CniNetworkPlugin::PlatformInit(Errors &error)
}
m_nsenterPath
=
tpath
;
free
(
tpath
);
return
;
}
int
CniNetworkPlugin
::
GetCNIConfFiles
(
const
std
::
string
&
pluginDir
,
std
::
vector
<
std
::
string
>
&
vect_files
,
Errors
&
err
)
auto
CniNetworkPlugin
::
GetCNIConfFiles
(
const
std
::
string
&
pluginDir
,
std
::
vector
<
std
::
string
>
&
vect_files
,
Errors
&
err
)
->
int
{
int
ret
{
0
};
std
::
string
usePluginDir
{
pluginDir
};
...
...
@@ -187,7 +188,7 @@ out:
return
ret
;
}
int
CniNetworkPlugin
::
LoadCNIConfigFileList
(
const
std
::
string
&
elem
,
struct
cni_network_list_conf
**
n_list
)
auto
CniNetworkPlugin
::
LoadCNIConfigFileList
(
const
std
::
string
&
elem
,
struct
cni_network_list_conf
**
n_list
)
->
int
{
int
ret
{
0
};
std
::
size_t
found
=
elem
.
rfind
(
".conflist"
);
...
...
@@ -227,11 +228,11 @@ out:
return
ret
;
}
int
CniNetworkPlugin
::
InsertConfNameToAllPanes
(
struct
cni_network_list_conf
*
n_list
,
std
::
set
<
std
::
string
>
&
allPanes
,
Errors
&
err
)
auto
CniNetworkPlugin
::
InsertConfNameToAllPanes
(
struct
cni_network_list_conf
*
n_list
,
std
::
set
<
std
::
string
>
&
allPanes
,
Errors
&
err
)
->
int
{
int
ret
{
0
};
std
::
string
confName
{
""
}
;
std
::
string
confName
;
if
(
n_list
==
nullptr
)
{
err
.
Errorf
(
"Invalid arguments"
);
...
...
@@ -265,7 +266,7 @@ void CniNetworkPlugin::GetDefaultCNINetwork(const std::string &confDir, std::vec
}
sort
(
files
.
begin
(),
files
.
end
());
for
(
auto
elem
:
files
)
{
for
(
const
auto
&
elem
:
files
)
{
struct
cni_network_list_conf
*
n_list
=
nullptr
;
if
(
LoadCNIConfigFileList
(
elem
,
&
n_list
)
!=
0
)
{
...
...
@@ -336,10 +337,9 @@ void CniNetworkPlugin::Init(CRIRuntimeServiceImpl *criImpl, const std::string &h
m_syncThread
=
std
::
thread
([
&
]()
{
UpdateDefaultNetwork
();
});
return
;
}
const
std
::
string
&
CniNetworkPlugin
::
Name
()
const
auto
CniNetworkPlugin
::
Name
()
const
->
const
std
::
string
&
{
return
CNI_PLUGIN_NAME
;
}
...
...
@@ -418,7 +418,7 @@ void CniNetworkPlugin::TearDownPod(const std::string &ns, const std::string &nam
UnlockNetworkMap
(
err
);
}
std
::
map
<
int
,
bool
>
*
CniNetworkPlugin
::
Capabilities
()
auto
CniNetworkPlugin
::
Capabilities
()
->
std
::
map
<
int
,
bool
>
*
{
return
m_noop
.
Capabilities
();
}
...
...
@@ -459,11 +459,12 @@ void CniNetworkPlugin::Event(const std::string &name, std::map<std::string, std:
SetPodCidr
(
iter
->
second
);
}
void
CniNetworkPlugin
::
GetPodNetworkStatus
(
const
std
::
string
&
ns
,
const
std
::
string
&
name
,
void
CniNetworkPlugin
::
GetPodNetworkStatus
(
const
std
::
string
&
/*ns*/
,
const
std
::
string
&
/*name*/
,
const
std
::
string
&
interfaceName
,
const
std
::
string
&
podSandboxID
,
PodNetworkStatus
&
status
,
Errors
&
err
)
{
std
::
string
netnsPath
,
ip
;
std
::
string
netnsPath
;
std
::
string
ip
;
Errors
tmpErr
;
if
(
podSandboxID
.
empty
())
{
...
...
@@ -592,7 +593,7 @@ static void PrepareRuntimeConf(const std::string &podName,
}
auto
iter
=
options
.
find
(
"UID"
);
std
::
string
podUID
{
""
}
;
std
::
string
podUID
;
if
(
iter
!=
options
.
end
())
{
podUID
=
iter
->
second
;
}
...
...
@@ -647,7 +648,7 @@ void CniNetworkPlugin::BuildCNIRuntimeConf(const std::string &podName,
*
cni_rc
=
nullptr
;
auto
iter
=
annotations
.
find
(
CRIHelpers
::
Constants
::
POD_CHECKPOINT_KEY
);
std
::
string
jsonCheckpoint
{
""
}
;
std
::
string
jsonCheckpoint
;
if
(
iter
!=
annotations
.
end
())
{
jsonCheckpoint
=
iter
->
second
;
}
...
...
@@ -668,7 +669,7 @@ void CniNetworkPlugin::BuildCNIRuntimeConf(const std::string &podName,
std
::
back_inserter
(
portMappings
));
}
if
(
portMappings
.
size
()
>
0
)
{
if
(
!
portMappings
.
empty
()
)
{
if
(
portMappings
.
size
()
>
SIZE_MAX
/
sizeof
(
struct
cni_port_mapping
*
))
{
err
.
SetError
(
"Invalid cni port mapping size"
);
goto
free_out
;
...
...
@@ -679,8 +680,8 @@ void CniNetworkPlugin::BuildCNIRuntimeConf(const std::string &podName,
err
.
SetError
(
"Out of memory"
);
goto
free_out
;
}
for
(
auto
iter
=
portMappings
.
cbegin
();
iter
!=
portMappings
.
cend
();
iter
++
)
{
if
(
iter
->
GetHostPort
()
&&
*
(
iter
->
GetHostPort
())
<=
0
)
{
for
(
const
auto
&
portMapping
:
portMappings
)
{
if
(
(
portMapping
.
GetHostPort
()
!=
nullptr
)
&&
*
(
portMapping
.
GetHostPort
())
<=
0
)
{
continue
;
}
rt
->
p_mapping
[
rt
->
p_mapping_len
]
=
...
...
@@ -689,14 +690,14 @@ void CniNetworkPlugin::BuildCNIRuntimeConf(const std::string &podName,
err
.
SetError
(
"Out of memory"
);
goto
free_out
;
}
if
(
iter
->
GetHostPort
()
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
host_port
=
*
(
iter
->
GetHostPort
());
if
(
portMapping
.
GetHostPort
()
!=
nullptr
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
host_port
=
*
(
portMapping
.
GetHostPort
());
}
if
(
iter
->
GetContainerPort
()
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
container_port
=
*
(
iter
->
GetContainerPort
());
if
(
portMapping
.
GetContainerPort
()
!=
nullptr
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
container_port
=
*
(
portMapping
.
GetContainerPort
());
}
if
(
iter
->
GetProtocol
()
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
protocol
=
strings_to_lower
(
iter
->
GetProtocol
()
->
c_str
());
if
(
portMapping
.
GetProtocol
()
!=
nullptr
)
{
rt
->
p_mapping
[
rt
->
p_mapping_len
]
->
protocol
=
strings_to_lower
(
portMapping
.
GetProtocol
()
->
c_str
());
}
// ignore hostip, because GetPodPortMappings() don't set
(
rt
->
p_mapping_len
)
++
;
...
...
src/daemon/entry/cri/cni_network_plugin.h
浏览文件 @
8c0ee03e
...
...
@@ -15,19 +15,19 @@
#ifndef DAEMON_ENTRY_CRI_CNI_NETWORK_PLUGIN_H
#define DAEMON_ENTRY_CRI_CNI_NETWORK_PLUGIN_H
#include <memory>
#include <string>
#include <map>
#include <
vector
>
#include <
memory
>
#include <set>
#include <string>
#include <thread>
#include <vector>
#include <clibcni/api.h>
#include "cri_runtime_service.h"
#include "errors.h"
#include "network_plugin.h"
#include "utils.h"
#include "errors.h"
#include "cri_runtime_service.h"
namespace
Network
{
#define UNUSED(x) ((void)(x))
...
...
@@ -39,10 +39,10 @@ class CNINetwork {
public:
CNINetwork
()
=
delete
;
CNINetwork
(
const
CNINetwork
&
)
=
delete
;
CNINetwork
&
operator
=
(
const
CNINetwork
&
)
=
delete
;
auto
operator
=
(
const
CNINetwork
&
)
->
CNINetwork
&
=
delete
;
CNINetwork
(
const
std
::
string
&
name
,
struct
cni_network_list_conf
*
netList
);
~
CNINetwork
();
const
std
::
string
&
GetName
()
const
auto
GetName
()
const
->
const
std
::
string
&
{
return
m_name
;
}
...
...
@@ -54,26 +54,25 @@ public:
{
m_path
=
binDirs
;
}
std
::
string
GetNetworkConfigJsonStr
()
auto
GetNetworkConfigJsonStr
()
->
std
::
string
{
return
m_networkConfig
->
bytes
?
m_networkConfig
->
bytes
:
""
;
return
m_networkConfig
->
bytes
!=
nullptr
?
m_networkConfig
->
bytes
:
""
;
}
std
::
string
GetNetworkType
()
const
auto
GetNetworkType
()
const
->
std
::
string
{
return
m_networkConfig
->
first_plugin_type
?
m_networkConfig
->
first_plugin_type
:
""
;
return
m_networkConfig
->
first_plugin_type
!=
nullptr
?
m_networkConfig
->
first_plugin_type
:
""
;
}
std
::
string
GetNetworkName
()
const
auto
GetNetworkName
()
const
->
std
::
string
{
return
m_networkConfig
->
first_plugin_name
?
m_networkConfig
->
first_plugin_name
:
""
;
return
m_networkConfig
->
first_plugin_name
!=
nullptr
?
m_networkConfig
->
first_plugin_name
:
""
;
}
struct
cni_network_list_conf
*
UpdateCNIConfList
(
struct
cni_network_list_conf
*
newConf
)
{
auto
UpdateCNIConfList
(
struct
cni_network_list_conf
*
newConf
)
->
struct
cni_network_list_conf
*
{
struct
cni_network_list_conf
*
result
=
m_networkConfig
;
m_networkConfig
=
newConf
;
return
result
;
}
char
**
GetPaths
(
Errors
&
err
)
;
auto
GetPaths
(
Errors
&
err
)
->
char
**
;
private:
std
::
string
m_name
;
...
...
@@ -95,9 +94,9 @@ public:
void
Event
(
const
std
::
string
&
name
,
std
::
map
<
std
::
string
,
std
::
string
>
&
details
)
override
;
const
std
::
string
&
Name
()
const
override
;
auto
Name
()
const
->
const
std
::
string
&
override
;
std
::
map
<
int
,
bool
>
*
Capabilities
()
override
;
auto
Capabilities
()
->
std
::
map
<
int
,
bool
>
*
override
;
void
SetUpPod
(
const
std
::
string
&
ns
,
const
std
::
string
&
name
,
const
std
::
string
&
interfaceName
,
const
std
::
string
&
podSandboxID
,
...
...
@@ -105,7 +104,7 @@ public:
const
std
::
map
<
std
::
string
,
std
::
string
>
&
options
,
Errors
&
error
)
override
;
void
TearDownPod
(
const
std
::
string
&
ns
,
const
std
::
string
&
name
,
const
std
::
string
&
networkPlan
e
,
const
std
::
string
&
podSandboxID
,
const
std
::
string
&
interfaceNam
e
,
const
std
::
string
&
podSandboxID
,
const
std
::
map
<
std
::
string
,
std
::
string
>
&
annotations
,
Errors
&
error
)
override
;
void
GetPodNetworkStatus
(
const
std
::
string
&
ns
,
const
std
::
string
&
name
,
const
std
::
string
&
interfaceName
,
...
...
@@ -119,7 +118,7 @@ private:
virtual
void
PlatformInit
(
Errors
&
error
);
virtual
void
SyncNetworkConfig
();
virtual
void
GetDefaultCNINetwork
(
const
std
::
string
&
plugin
Dir
,
std
::
vector
<
std
::
string
>
&
binDirs
,
Errors
&
error
);
virtual
void
GetDefaultCNINetwork
(
const
std
::
string
&
conf
Dir
,
std
::
vector
<
std
::
string
>
&
binDirs
,
Errors
&
error
);
virtual
void
CheckInitialized
(
Errors
&
error
);
...
...
@@ -143,15 +142,16 @@ private:
const
std
::
map
<
std
::
string
,
std
::
string
>
&
options
,
struct
runtime_conf
**
cni_rc
,
Errors
&
error
);
private:
void
RLockNetworkMap
(
Errors
&
error
);
void
WLockNetworkMap
(
Errors
&
error
);
void
UnlockNetworkMap
(
Errors
&
error
);
void
SetDefaultNetwork
(
std
::
unique_ptr
<
CNINetwork
>
network
,
std
::
vector
<
std
::
string
>
&
binDirs
,
Errors
&
err
);
void
SetPodCidr
(
const
std
::
string
&
podCidr
);
int
GetCNIConfFiles
(
const
std
::
string
&
pluginDir
,
std
::
vector
<
std
::
string
>
&
vect_files
,
Errors
&
err
);
int
LoadCNIConfigFileList
(
const
std
::
string
&
elem
,
struct
cni_network_list_conf
**
n_list
);
int
InsertConfNameToAllPanes
(
struct
cni_network_list_conf
*
n_list
,
std
::
set
<
std
::
string
>
&
allPanes
,
Errors
&
err
);
static
auto
GetCNIConfFiles
(
const
std
::
string
&
pluginDir
,
std
::
vector
<
std
::
string
>
&
vect_files
,
Errors
&
err
)
->
int
;
static
auto
LoadCNIConfigFileList
(
const
std
::
string
&
elem
,
struct
cni_network_list_conf
**
n_list
)
->
int
;
static
auto
InsertConfNameToAllPanes
(
struct
cni_network_list_conf
*
n_list
,
std
::
set
<
std
::
string
>
&
allPanes
,
Errors
&
err
)
->
int
;
void
ResetCNINetwork
(
std
::
map
<
std
::
string
,
std
::
unique_ptr
<
CNINetwork
>>
&
newNets
,
Errors
&
err
);
void
UpdateDefaultNetwork
();
...
...
src/daemon/entry/cri/cri_container.h
浏览文件 @
8c0ee03e
...
...
@@ -22,7 +22,7 @@ class CRIContainerManagerImpl : public cri::ContainerManager {
public:
CRIContainerManagerImpl
()
=
default
;
CRIContainerManagerImpl
(
const
CRIContainerManagerImpl
&
)
=
delete
;
CRIContainerManagerImpl
&
operator
=
(
const
CRIContainerManagerImpl
&
)
=
delete
;
auto
operator
=
(
const
CRIContainerManagerImpl
&
)
->
CRIContainerManagerImpl
&
=
delete
;
virtual
~
CRIContainerManagerImpl
()
=
default
;
};
...
...
src/daemon/entry/cri/cri_helpers.cc
浏览文件 @
8c0ee03e
...
...
@@ -14,21 +14,21 @@
*********************************************************************************/
#include "cri_helpers.h"
#include <
utility
>
#include <
algorithm
>
#include <functional>
#include <iostream>
#include <algorithm>
#include <openssl/sha.h>
#include <sys/utsname.h>
#include <utility>
#include "cri_runtime_service.h"
#include "api.pb.h"
#include "cri_runtime_service.h"
#include "cri_security_context.h"
#include "utils.h"
#include "
cxx
utils.h"
#include "isula_libutils/log.h"
#include "path.h"
#include "isula_libutils/parse_common.h"
#include "cxxutils.h"
#include "path.h"
#include "utils.h"
namespace
CRIHelpers
{
const
std
::
string
Constants
::
DEFAULT_RUNTIME_NAME
{
"lcr"
};
...
...
@@ -58,12 +58,12 @@ const char *InternalLabelKeys[] = {
CRIHelpers
::
Constants
::
SANDBOX_ID_LABEL_KEY
.
c_str
(),
nullptr
};
std
::
string
GetDefaultSandboxImage
(
Errors
&
err
)
auto
GetDefaultSandboxImage
(
Errors
&
err
)
->
std
::
string
{
const
std
::
string
defaultPodSandboxImageName
{
"pause"
};
const
std
::
string
defaultPodSandboxImageVersion
{
"3.0"
};
std
::
string
machine
;
struct
utsname
uts
;
struct
utsname
uts
{}
;
if
(
uname
(
&
uts
)
<
0
)
{
err
.
SetError
(
"Failed to read host arch."
);
...
...
@@ -85,7 +85,8 @@ std::string GetDefaultSandboxImage(Errors &err)
return
defaultPodSandboxImageName
+
"-"
+
machine
+
":"
+
defaultPodSandboxImageVersion
;
}
json_map_string_string
*
MakeLabels
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapLabels
,
Errors
&
error
)
auto
MakeLabels
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapLabels
,
Errors
&
error
)
->
json_map_string_string
*
{
json_map_string_string
*
labels
=
(
json_map_string_string
*
)
util_common_calloc_s
(
sizeof
(
json_map_string_string
));
if
(
labels
==
nullptr
)
{
...
...
@@ -93,7 +94,7 @@ json_map_string_string *MakeLabels(const google::protobuf::Map<std::string, std:
return
nullptr
;
}
if
(
mapLabels
.
size
()
>
0
)
{
if
(
!
mapLabels
.
empty
()
)
{
if
(
mapLabels
.
size
()
>
LIST_SIZE_MAX
)
{
error
.
Errorf
(
"Labels list is too long, the limit is %d"
,
LIST_SIZE_MAX
);
goto
cleanup
;
...
...
@@ -111,8 +112,8 @@ cleanup:
return
nullptr
;
}
json_map_string_string
*
MakeAnnotations
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapAnnotations
,
Errors
&
error
)
auto
MakeAnnotations
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapAnnotations
,
Errors
&
error
)
->
json_map_string_string
*
{
json_map_string_string
*
annotations
=
(
json_map_string_string
*
)
util_common_calloc_s
(
sizeof
(
json_map_string_string
));
...
...
@@ -121,7 +122,7 @@ json_map_string_string *MakeAnnotations(const google::protobuf::Map<std::string,
return
nullptr
;
}
if
(
mapAnnotations
.
size
()
>
0
)
{
if
(
!
mapAnnotations
.
empty
()
)
{
if
(
mapAnnotations
.
size
()
>
LIST_SIZE_MAX
)
{
error
.
Errorf
(
"Annotations list is too long, the limit is %d"
,
LIST_SIZE_MAX
);
goto
cleanup
;
...
...
@@ -147,7 +148,7 @@ void ProtobufAnnoMapToStd(const google::protobuf::Map<std::string, std::string>
}
}
static
bool
IsSandboxLabel
(
json_map_string_string
*
input
)
static
auto
IsSandboxLabel
(
json_map_string_string
*
input
)
->
bool
{
bool
is_sandbox_label
{
false
};
...
...
@@ -207,7 +208,7 @@ void ExtractAnnotations(json_map_string_string *input, google::protobuf::Map<std
}
}
int
FiltersAdd
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
auto
FiltersAdd
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
->
int
{
if
(
filters
==
nullptr
)
{
return
-
1
;
...
...
@@ -230,7 +231,7 @@ int FiltersAdd(defs_filters *filters, const std::string &key, const std::string
return
-
1
;
}
if
(
filters
->
len
)
{
if
(
filters
->
len
!=
0u
)
{
(
void
)
memcpy
(
keys
,
filters
->
keys
,
filters
->
len
*
sizeof
(
char
*
));
(
void
)
memcpy
(
vals
,
filters
->
values
,
filters
->
len
*
sizeof
(
json_map_string_bool
*
));
...
...
@@ -245,7 +246,7 @@ int FiltersAdd(defs_filters *filters, const std::string &key, const std::string
ERROR
(
"Out of memory"
);
return
-
1
;
}
if
(
append_json_map_string_bool
(
filters
->
values
[
filters
->
len
],
value
.
c_str
(),
true
))
{
if
(
append_json_map_string_bool
(
filters
->
values
[
filters
->
len
],
value
.
c_str
(),
true
)
!=
0
)
{
ERROR
(
"Append failed"
);
return
-
1
;
}
...
...
@@ -255,7 +256,7 @@ int FiltersAdd(defs_filters *filters, const std::string &key, const std::string
return
0
;
}
int
FiltersAddLabel
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
auto
FiltersAddLabel
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
->
int
{
if
(
filters
==
nullptr
)
{
return
-
1
;
...
...
@@ -263,7 +264,7 @@ int FiltersAddLabel(defs_filters *filters, const std::string &key, const std::st
return
FiltersAdd
(
filters
,
"label"
,
key
+
"="
+
value
);
}
runtime
::
v1alpha2
::
ContainerState
ContainerStatusToRuntime
(
Container_Status
status
)
auto
ContainerStatusToRuntime
(
Container_Status
status
)
->
runtime
::
v1alpha2
::
ContainerState
{
switch
(
status
)
{
case
CONTAINER_STATUS_CREATED
:
...
...
@@ -280,7 +281,7 @@ runtime::v1alpha2::ContainerState ContainerStatusToRuntime(Container_Status stat
}
}
char
**
StringVectorToCharArray
(
std
::
vector
<
std
::
string
>
&
path
)
auto
StringVectorToCharArray
(
std
::
vector
<
std
::
string
>
&
path
)
->
char
**
{
size_t
len
=
path
.
size
();
if
(
len
==
0
||
len
>
(
SIZE_MAX
/
sizeof
(
char
*
))
-
1
)
{
...
...
@@ -291,14 +292,14 @@ char **StringVectorToCharArray(std::vector<std::string> &path)
return
nullptr
;
}
size_t
i
{};
for
(
auto
it
=
path
.
cbegin
();
it
!=
path
.
cend
();
it
++
)
{
result
[
i
++
]
=
util_strdup_s
(
it
->
c_str
());
for
(
const
auto
&
it
:
path
)
{
result
[
i
++
]
=
util_strdup_s
(
it
.
c_str
());
}
return
result
;
}
imagetool_image
*
InspectImageByID
(
const
std
::
string
&
imageID
,
Errors
&
err
)
auto
InspectImageByID
(
const
std
::
string
&
imageID
,
Errors
&
err
)
->
imagetool_image
*
{
im_status_request
*
request
{
nullptr
};
im_status_response
*
response
{
nullptr
};
...
...
@@ -337,7 +338,7 @@ cleanup:
return
image
;
}
std
::
string
ToPullableImageID
(
const
std
::
string
&
id
,
imagetool_image
*
image
)
auto
ToPullableImageID
(
const
std
::
string
&
id
,
imagetool_image
*
image
)
->
std
::
string
{
// Default to the image ID, but if RepoDigests is not empty, use
// the first digest instead.
...
...
@@ -349,19 +350,19 @@ std::string ToPullableImageID(const std::string &id, imagetool_image *image)
}
// IsContainerNotFoundError checks whether the error is container not found error.
bool
IsContainerNotFoundError
(
const
std
::
string
&
err
)
auto
IsContainerNotFoundError
(
const
std
::
string
&
err
)
->
bool
{
return
err
.
find
(
"No such container:"
)
!=
std
::
string
::
npos
||
err
.
find
(
"No such image or container"
)
!=
std
::
string
::
npos
;
}
// IsImageNotFoundError checks whether the error is Image not found error.
bool
IsImageNotFoundError
(
const
std
::
string
&
err
)
auto
IsImageNotFoundError
(
const
std
::
string
&
err
)
->
bool
{
return
err
.
find
(
"No such image:"
)
!=
std
::
string
::
npos
;
}
std
::
string
sha256
(
const
char
*
val
)
auto
sha256
(
const
char
*
val
)
->
std
::
string
{
if
(
val
==
nullptr
)
{
return
""
;
...
...
@@ -385,8 +386,8 @@ std::string sha256(const char *val)
return
outputBuffer
;
}
cri_pod_network_element
**
GetNetworkPlaneFromPodAnno
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
,
size_t
*
len
,
Errors
&
error
)
auto
GetNetworkPlaneFromPodAnno
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
,
size_t
*
len
,
Errors
&
error
)
->
cri_pod_network_element
**
{
auto
iter
=
annotations
.
find
(
CRIHelpers
::
Constants
::
POD_NETWORK_ANNOTATION_KEY
);
...
...
@@ -403,8 +404,8 @@ cri_pod_network_element **GetNetworkPlaneFromPodAnno(const google::protobuf::Map
return
result
;
}
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>
CheckpointToSandbox
(
const
std
::
string
&
id
,
const
cri
::
PodSandboxCheckpoint
&
checkpoint
)
auto
CheckpointToSandbox
(
const
std
::
string
&
id
,
const
cri
::
PodSandboxCheckpoint
&
checkpoint
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>
{
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>
result
(
new
(
std
::
nothrow
)
runtime
::
v1alpha2
::
PodSandbox
);
if
(
result
==
nullptr
)
{
...
...
@@ -461,7 +462,7 @@ void UpdateCreateConfig(container_config *createConfig, host_config *hc,
void
GenerateMountBindings
(
const
google
::
protobuf
::
RepeatedPtrField
<
runtime
::
v1alpha2
::
Mount
>
&
mounts
,
host_config
*
hostconfig
,
Errors
&
err
)
{
if
(
mounts
.
size
()
<=
0
||
hostconfig
==
nullptr
)
{
if
(
mounts
.
empty
()
||
hostconfig
==
nullptr
)
{
return
;
}
if
((
size_t
)
mounts
.
size
()
>
INT_MAX
/
sizeof
(
char
*
))
{
...
...
@@ -498,7 +499,7 @@ void GenerateMountBindings(const google::protobuf::RepeatedPtrField<runtime::v1a
// Falls back to "private"
}
if
(
attrs
.
size
()
>
0
)
{
if
(
!
attrs
.
empty
()
)
{
bind
+=
":"
+
CXXUtils
::
StringsJoin
(
attrs
,
","
);
}
hostconfig
->
binds
[
i
]
=
util_strdup_s
(
bind
.
c_str
());
...
...
@@ -506,8 +507,8 @@ void GenerateMountBindings(const google::protobuf::RepeatedPtrField<runtime::v1a
}
}
std
::
vector
<
std
::
string
>
GenerateEnvList
(
const
::
google
::
protobuf
::
RepeatedPtrField
<::
runtime
::
v1alpha2
::
KeyValue
>
&
envs
)
auto
GenerateEnvList
(
const
::
google
::
protobuf
::
RepeatedPtrField
<::
runtime
::
v1alpha2
::
KeyValue
>
&
envs
)
->
std
::
vector
<
std
::
string
>
{
std
::
vector
<
std
::
string
>
vect
;
std
::
for_each
(
envs
.
begin
(),
envs
.
end
(),
[
&
vect
](
const
::
runtime
::
v1alpha2
::
KeyValue
&
elem
)
{
...
...
@@ -516,7 +517,7 @@ std::vector<std::string> GenerateEnvList(
return
vect
;
}
bool
ValidateCheckpointKey
(
const
std
::
string
&
key
,
Errors
&
error
)
auto
ValidateCheckpointKey
(
const
std
::
string
&
key
,
Errors
&
error
)
->
bool
{
const
std
::
string
PATTERN
{
"^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$"
};
...
...
@@ -534,7 +535,7 @@ err_out:
return
false
;
}
std
::
string
ToIsuladContainerStatus
(
const
runtime
::
v1alpha2
::
ContainerStateValue
&
state
)
auto
ToIsuladContainerStatus
(
const
runtime
::
v1alpha2
::
ContainerStateValue
&
state
)
->
std
::
string
{
if
(
state
.
state
()
==
runtime
::
v1alpha2
::
CONTAINER_CREATED
)
{
return
"created"
;
...
...
@@ -553,7 +554,7 @@ struct iSuladOpt {
std
::
string
msg
;
};
std
::
vector
<
std
::
string
>
fmtiSuladOpts
(
const
std
::
vector
<
iSuladOpt
>
&
opts
,
const
char
&
sep
)
auto
fmtiSuladOpts
(
const
std
::
vector
<
iSuladOpt
>
&
opts
,
const
char
&
sep
)
->
std
::
vector
<
std
::
string
>
{
std
::
vector
<
std
::
string
>
fmtOpts
(
opts
.
size
());
for
(
size_t
i
{};
i
<
opts
.
size
();
i
++
)
{
...
...
@@ -562,7 +563,7 @@ std::vector<std::string> fmtiSuladOpts(const std::vector<iSuladOpt> &opts, const
return
fmtOpts
;
}
std
::
vector
<
iSuladOpt
>
GetSeccompiSuladOpts
(
const
std
::
string
&
seccompProfile
,
Errors
&
error
)
auto
GetSeccompiSuladOpts
(
const
std
::
string
&
seccompProfile
,
Errors
&
error
)
->
std
::
vector
<
iSuladOpt
>
{
if
(
seccompProfile
.
empty
()
||
seccompProfile
==
"unconfined"
)
{
return
std
::
vector
<
iSuladOpt
>
{
{
"seccomp"
,
"unconfined"
,
""
}
};
...
...
@@ -577,7 +578,7 @@ std::vector<iSuladOpt> GetSeccompiSuladOpts(const std::string &seccompProfile, E
}
std
::
string
fname
=
seccompProfile
.
substr
(
std
::
string
(
"localhost/"
).
length
(),
seccompProfile
.
length
());
char
dstpath
[
PATH_MAX
]
{
0
};
if
(
!
cleanpath
(
fname
.
c_str
(),
dstpath
,
sizeof
(
dstpath
))
)
{
if
(
cleanpath
(
fname
.
c_str
(),
dstpath
,
sizeof
(
dstpath
))
==
nullptr
)
{
error
.
Errorf
(
"failed to get clean path"
);
return
std
::
vector
<
iSuladOpt
>
{};
}
...
...
@@ -608,7 +609,8 @@ std::vector<iSuladOpt> GetSeccompiSuladOpts(const std::string &seccompProfile, E
return
ret
;
}
std
::
vector
<
std
::
string
>
GetSeccompSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
)
auto
GetSeccompSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
)
->
std
::
vector
<
std
::
string
>
{
std
::
vector
<
iSuladOpt
>
seccompOpts
=
GetSeccompiSuladOpts
(
seccompProfile
,
error
);
if
(
error
.
NotEmpty
())
{
...
...
@@ -618,7 +620,8 @@ std::vector<std::string> GetSeccompSecurityOpts(const std::string &seccompProfil
return
fmtiSuladOpts
(
seccompOpts
,
separator
);
}
std
::
vector
<
std
::
string
>
GetSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
)
auto
GetSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
)
->
std
::
vector
<
std
::
string
>
{
std
::
vector
<
std
::
string
>
seccompSecurityOpts
=
GetSeccompSecurityOpts
(
seccompProfile
,
separator
,
error
);
if
(
error
.
NotEmpty
())
{
...
...
@@ -627,7 +630,7 @@ std::vector<std::string> GetSecurityOpts(const std::string &seccompProfile, cons
return
seccompSecurityOpts
;
}
std
::
string
CreateCheckpoint
(
cri
::
PodSandboxCheckpoint
&
checkpoint
,
Errors
&
error
)
auto
CreateCheckpoint
(
cri
::
PodSandboxCheckpoint
&
checkpoint
,
Errors
&
error
)
->
std
::
string
{
cri_checkpoint
*
criCheckpoint
{
nullptr
};
struct
parser_context
ctx
{
...
...
@@ -635,7 +638,7 @@ std::string CreateCheckpoint(cri::PodSandboxCheckpoint &checkpoint, Errors &erro
};
parser_error
err
{
nullptr
};
char
*
jsonStr
{
nullptr
};
std
::
string
result
{
""
}
;
std
::
string
result
;
checkpoint
.
CheckpointToCStruct
(
&
criCheckpoint
,
error
);
if
(
error
.
NotEmpty
())
{
...
...
src/daemon/entry/cri/cri_helpers.h
浏览文件 @
8c0ee03e
...
...
@@ -14,20 +14,20 @@
*********************************************************************************/
#ifndef DAEMON_ENTRY_CRI_CRI_HELPERS_H
#define DAEMON_ENTRY_CRI_CRI_HELPERS_H
#include <
string
>
#include <
map
>
#include <memory>
#include <string>
#include <vector>
#include <map>
#include "constants.h"
#include "api.pb.h"
#include "errors.h"
#include "isula_libutils/host_config.h"
#include "callback.h"
#include "isula_libutils/docker_seccomp.h"
#include "isula_libutils/cri_pod_network.h"
#include "checkpoint_handler.h"
#include "constants.h"
#include "errors.h"
#include "image_api.h"
#include "isula_libutils/cri_pod_network.h"
#include "isula_libutils/docker_seccomp.h"
#include "isula_libutils/host_config.h"
namespace
CRIHelpers
{
class
Constants
{
...
...
@@ -58,45 +58,46 @@ public:
static
const
std
::
string
NET_PLUGIN_EVENT_POD_CIDR_CHANGE_DETAIL_CIDR
;
};
std
::
string
GetDefaultSandboxImage
(
Errors
&
err
)
;
auto
GetDefaultSandboxImage
(
Errors
&
err
)
->
std
::
string
;
json_map_string_string
*
MakeLabels
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapLabels
,
Errors
&
error
);
auto
MakeLabels
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapLabels
,
Errors
&
error
)
->
json_map_string_string
*
;
json_map_string_string
*
MakeAnnotations
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapAnnotations
,
Errors
&
error
)
;
auto
MakeAnnotations
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
mapAnnotations
,
Errors
&
error
)
->
json_map_string_string
*
;
void
ExtractLabels
(
json_map_string_string
*
input
,
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
labels
);
void
ExtractAnnotations
(
json_map_string_string
*
input
,
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
);
int
FiltersAdd
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
;
auto
FiltersAdd
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
->
int
;
int
FiltersAddLabel
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
;
auto
FiltersAddLabel
(
defs_filters
*
filters
,
const
std
::
string
&
key
,
const
std
::
string
&
value
)
->
int
;
void
ProtobufAnnoMapToStd
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
,
std
::
map
<
std
::
string
,
std
::
string
>
&
newAnnos
);
runtime
::
v1alpha2
::
ContainerState
ContainerStatusToRuntime
(
Container_Status
status
)
;
auto
ContainerStatusToRuntime
(
Container_Status
status
)
->
runtime
::
v1alpha2
::
ContainerState
;
char
**
StringVectorToCharArray
(
std
::
vector
<
std
::
string
>
&
path
)
;
auto
StringVectorToCharArray
(
std
::
vector
<
std
::
string
>
&
path
)
->
char
**
;
imagetool_image
*
InspectImageByID
(
const
std
::
string
&
imageID
,
Errors
&
err
)
;
auto
InspectImageByID
(
const
std
::
string
&
imageID
,
Errors
&
err
)
->
imagetool_image
*
;
std
::
string
ToPullableImageID
(
const
std
::
string
&
id
,
imagetool_image
*
image
)
;
auto
ToPullableImageID
(
const
std
::
string
&
id
,
imagetool_image
*
image
)
->
std
::
string
;
bool
IsContainerNotFoundError
(
const
std
::
string
&
err
)
;
auto
IsContainerNotFoundError
(
const
std
::
string
&
err
)
->
bool
;
bool
IsImageNotFoundError
(
const
std
::
string
&
err
)
;
auto
IsImageNotFoundError
(
const
std
::
string
&
err
)
->
bool
;
std
::
string
sha256
(
const
char
*
val
)
;
auto
sha256
(
const
char
*
val
)
->
std
::
string
;
cri_pod_network_element
**
GetNetworkPlaneFromPodAnno
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
,
size_t
*
len
,
Errors
&
error
)
;
auto
GetNetworkPlaneFromPodAnno
(
const
google
::
protobuf
::
Map
<
std
::
string
,
std
::
string
>
&
annotations
,
size_t
*
len
,
Errors
&
error
)
->
cri_pod_network_element
**
;
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>
CheckpointToSandbox
(
const
std
::
string
&
id
,
const
cri
::
PodSandboxCheckpoint
&
checkpoint
)
;
auto
CheckpointToSandbox
(
const
std
::
string
&
id
,
const
cri
::
PodSandboxCheckpoint
&
checkpoint
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>
;
std
::
string
StringsJoin
(
const
std
::
vector
<
std
::
string
>
&
vec
,
const
std
::
string
&
sep
)
;
auto
StringsJoin
(
const
std
::
vector
<
std
::
string
>
&
vec
,
const
std
::
string
&
sep
)
->
std
::
string
;
void
UpdateCreateConfig
(
container_config
*
createConfig
,
host_config
*
hc
,
const
runtime
::
v1alpha2
::
ContainerConfig
&
config
,
const
std
::
string
&
podSandboxID
,
...
...
@@ -105,16 +106,17 @@ void UpdateCreateConfig(container_config *createConfig, host_config *hc,
void
GenerateMountBindings
(
const
google
::
protobuf
::
RepeatedPtrField
<
runtime
::
v1alpha2
::
Mount
>
&
mounts
,
host_config
*
hostconfig
,
Errors
&
err
);
std
::
vector
<
std
::
string
>
GenerateEnvList
(
const
::
google
::
protobuf
::
RepeatedPtrField
<::
runtime
::
v1alpha2
::
KeyValue
>
&
envs
)
;
auto
GenerateEnvList
(
const
::
google
::
protobuf
::
RepeatedPtrField
<::
runtime
::
v1alpha2
::
KeyValue
>
&
envs
)
-
>
std
::
vector
<
std
::
string
>
;
bool
ValidateCheckpointKey
(
const
std
::
string
&
key
,
Errors
&
error
)
;
auto
ValidateCheckpointKey
(
const
std
::
string
&
key
,
Errors
&
error
)
->
bool
;
std
::
string
ToIsuladContainerStatus
(
const
runtime
::
v1alpha2
::
ContainerStateValue
&
state
)
;
auto
ToIsuladContainerStatus
(
const
runtime
::
v1alpha2
::
ContainerStateValue
&
state
)
->
std
::
string
;
std
::
vector
<
std
::
string
>
GetSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
);
auto
GetSecurityOpts
(
const
std
::
string
&
seccompProfile
,
const
char
&
separator
,
Errors
&
error
)
->
std
::
vector
<
std
::
string
>
;
std
::
string
CreateCheckpoint
(
cri
::
PodSandboxCheckpoint
&
checkpoint
,
Errors
&
error
)
;
auto
CreateCheckpoint
(
cri
::
PodSandboxCheckpoint
&
checkpoint
,
Errors
&
error
)
->
std
::
string
;
void
GetCheckpoint
(
const
std
::
string
&
jsonCheckPoint
,
cri
::
PodSandboxCheckpoint
&
checkpoint
,
Errors
&
error
);
...
...
src/daemon/entry/cri/cri_image_service.cc
浏览文件 @
8c0ee03e
...
...
@@ -17,18 +17,18 @@
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <utility>
#include <vector>
#include <unistd.h>
#include <grpc++/grpc++.h>
#include <unistd.h>
#include "isula_libutils/log.h"
#include "utils.h"
#include "cri_helpers.h"
#include "err_msg.h"
#include "events_sender_api.h"
#include "isula_libutils/log.h"
#include "service_image_api.h"
#include "
err_msg
.h"
#include "
utils
.h"
static
void
conv_image_to_grpc
(
const
imagetool_image
*
element
,
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
&
image
)
{
...
...
@@ -67,12 +67,11 @@ static void conv_image_to_grpc(const imagetool_image *element, std::unique_ptr<r
image
->
set_username
(
element
->
username
);
}
return
;
}
int
CRIImageServiceImpl
::
pull_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
const
runtime
::
v1alpha2
::
AuthConfig
*
auth
,
im_pull_request
**
request
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
pull_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
const
runtime
::
v1alpha2
::
AuthConfig
*
auth
,
im_pull_request
**
request
,
Errors
&
error
)
->
int
{
im_pull_request
*
tmpreq
=
(
im_pull_request
*
)
util_common_calloc_s
(
sizeof
(
im_pull_request
));
if
(
tmpreq
==
nullptr
)
{
...
...
@@ -114,8 +113,9 @@ int CRIImageServiceImpl::pull_request_from_grpc(const runtime::v1alpha2::ImageSp
return
0
;
}
int
CRIImageServiceImpl
::
list_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageFilter
*
filter
,
im_list_request
**
request
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
list_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageFilter
*
filter
,
im_list_request
**
request
,
Errors
&
error
)
->
int
{
im_list_request
*
tmpreq
=
(
im_list_request
*
)
util_common_calloc_s
(
sizeof
(
im_list_request
));
if
(
tmpreq
==
nullptr
)
{
...
...
@@ -162,12 +162,12 @@ void CRIImageServiceImpl::ListImages(const runtime::v1alpha2::ImageFilter &filte
im_list_response
*
response
{
nullptr
};
int
ret
=
list_request_from_grpc
(
&
filter
,
&
request
,
error
);
if
(
ret
)
{
if
(
ret
!=
0
)
{
goto
cleanup
;
}
ret
=
im_list_images
(
request
,
&
response
);
if
(
ret
)
{
if
(
ret
!=
0
)
{
if
(
response
!=
nullptr
&&
response
->
errmsg
!=
nullptr
)
{
error
.
SetError
(
response
->
errmsg
);
}
else
{
...
...
@@ -182,11 +182,10 @@ cleanup:
DAEMON_CLEAR_ERRMSG
();
free_im_list_request
(
request
);
free_im_list_response
(
response
);
return
;
}
int
CRIImageServiceImpl
::
status_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_status_request
**
request
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
status_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_status_request
**
request
,
Errors
&
error
)
->
int
{
im_status_request
*
tmpreq
=
(
im_status_request
*
)
util_common_calloc_s
(
sizeof
(
im_status_request
));
if
(
tmpreq
==
nullptr
)
{
...
...
@@ -204,8 +203,8 @@ int CRIImageServiceImpl::status_request_from_grpc(const runtime::v1alpha2::Image
return
0
;
}
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
CRIImageServiceImpl
::
status_image_to_grpc
(
im_status_response
*
response
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
status_image_to_grpc
(
im_status_response
*
response
,
Errors
&
/*error*/
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
{
imagetool_image_status
*
image_info
=
response
->
image_info
;
if
(
image_info
==
nullptr
)
{
...
...
@@ -227,8 +226,8 @@ std::unique_ptr<runtime::v1alpha2::Image> CRIImageServiceImpl::status_image_to_g
return
image
;
}
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
CRIImageServiceImpl
::
ImageStatus
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
ImageStatus
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
{
im_status_request
*
request
{
nullptr
};
im_status_response
*
response
{
nullptr
};
...
...
@@ -258,10 +257,10 @@ cleanup:
return
out
;
}
std
::
string
CRIImageServiceImpl
::
PullImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
const
runtime
::
v1alpha2
::
AuthConfig
&
auth
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
PullImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
const
runtime
::
v1alpha2
::
AuthConfig
&
auth
,
Errors
&
error
)
->
std
::
string
{
std
::
string
out_str
{
""
}
;
std
::
string
out_str
;
im_pull_request
*
request
{
nullptr
};
im_pull_response
*
response
{
nullptr
};
...
...
@@ -292,8 +291,8 @@ cleanup:
return
out_str
;
}
int
CRIImageServiceImpl
::
remove_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_rmi_request
**
request
,
Errors
&
error
)
auto
CRIImageServiceImpl
::
remove_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_rmi_request
**
request
,
Errors
&
error
)
->
int
{
im_rmi_request
*
tmpreq
=
(
im_rmi_request
*
)
util_common_calloc_s
(
sizeof
(
im_rmi_request
));
if
(
tmpreq
==
nullptr
)
{
...
...
@@ -313,12 +312,12 @@ int CRIImageServiceImpl::remove_request_from_grpc(const runtime::v1alpha2::Image
void
CRIImageServiceImpl
::
RemoveImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
{
std
::
string
out_str
{
""
}
;
std
::
string
out_str
;
im_rmi_request
*
request
{
nullptr
};
DAEMON_CLEAR_ERRMSG
();
if
(
remove_request_from_grpc
(
&
image
,
&
request
,
error
))
{
if
(
remove_request_from_grpc
(
&
image
,
&
request
,
error
)
!=
0
)
{
goto
cleanup
;
}
...
...
@@ -333,12 +332,11 @@ void CRIImageServiceImpl::RemoveImage(const runtime::v1alpha2::ImageSpec &image,
cleanup:
DAEMON_CLEAR_ERRMSG
();
free_im_remove_request
(
request
);
return
;
}
void
CRIImageServiceImpl
::
fs_info_to_grpc
(
im_fs_info_response
*
response
,
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
FilesystemUsage
>>
*
fs_infos
,
Errors
&
error
)
Errors
&
/*error*/
)
{
imagetool_fs_info
*
got_fs_info
=
response
->
fs_info
;
if
(
got_fs_info
==
nullptr
)
{
...
...
@@ -396,7 +394,7 @@ void CRIImageServiceImpl::ImageFsInfo(std::vector<std::unique_ptr<runtime::v1alp
{
im_fs_info_response
*
response
{
nullptr
};
if
(
im_get_filesystem_info
(
IMAGE_TYPE_OCI
,
&
response
))
{
if
(
im_get_filesystem_info
(
IMAGE_TYPE_OCI
,
&
response
)
!=
0
)
{
if
(
response
!=
nullptr
&&
response
->
errmsg
!=
nullptr
)
{
error
.
SetError
(
response
->
errmsg
);
}
else
{
...
...
@@ -410,5 +408,4 @@ void CRIImageServiceImpl::ImageFsInfo(std::vector<std::unique_ptr<runtime::v1alp
out:
DAEMON_CLEAR_ERRMSG
();
free_im_fs_info_response
(
response
);
return
;
}
src/daemon/entry/cri/cri_image_service.h
浏览文件 @
8c0ee03e
...
...
@@ -46,12 +46,15 @@ private:
int
pull_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
const
runtime
::
v1alpha2
::
AuthConfig
*
auth
,
im_pull_request
**
request
,
Errors
&
error
);
int
list_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageFilter
*
filter
,
im_list_request
**
request
,
Errors
&
error
);
int
list_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageFilter
*
filter
,
im_list_request
**
request
,
Errors
&
error
);
void
list_images_to_grpc
(
im_list_response
*
response
,
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>>
*
images
,
void
list_images_to_grpc
(
im_list_response
*
response
,
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>>
*
images
,
Errors
&
error
);
int
status_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_status_request
**
request
,
Errors
&
error
);
int
status_request_from_grpc
(
const
runtime
::
v1alpha2
::
ImageSpec
*
image
,
im_status_request
**
request
,
Errors
&
error
);
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
status_image_to_grpc
(
im_status_response
*
response
,
Errors
&
error
);
...
...
src/daemon/entry/cri/cri_runtime_service.cc
浏览文件 @
8c0ee03e
...
...
@@ -14,21 +14,21 @@
*********************************************************************************/
#include "cri_runtime_service.h"
#include <grpc++/grpc++.h>
#include <iostream>
#include <memory>
#include <vector>
#include <map>
#include <memory>
#include <string>
#include <grpc++/grpc++.h>
#include <unistd.h>
#include <vector>
#include "isula_libutils/log.h"
#include "utils.h"
#include "config.h"
#include "isula_libutils/host_config.h"
#include "cri_helpers.h"
#include "network_plugin.h"
#include "isula_libutils/container_inspect.h"
#include "isula_libutils/host_config.h"
#include "isula_libutils/log.h"
#include "network_plugin.h"
#include "utils.h"
namespace
CRIRuntimeService
{
std
::
string
Constants
::
namespaceModeHost
{
"host"
};
...
...
@@ -49,11 +49,11 @@ CRIRuntimeServiceImpl::CRIRuntimeServiceImpl()
}
void
CRIRuntimeServiceImpl
::
VersionResponseToGRPC
(
container_version_response
*
response
,
runtime
::
v1alpha2
::
VersionResponse
*
gResponse
,
Errors
&
error
)
runtime
::
v1alpha2
::
VersionResponse
*
gResponse
)
{
gResponse
->
set_version
(
CRIRuntimeService
::
Constants
::
kubeAPIVersion
);
gResponse
->
set_runtime_name
(
CRIRuntimeService
::
Constants
::
iSulaRuntimeName
);
gResponse
->
set_runtime_version
(
response
->
version
?
response
->
version
:
""
);
gResponse
->
set_runtime_version
(
response
->
version
!=
nullptr
?
response
->
version
:
""
);
gResponse
->
set_runtime_api_version
(
VERSION
);
}
...
...
@@ -94,20 +94,20 @@ void CRIRuntimeServiceImpl::Version(const std::string &apiVersion, runtime::v1al
container_version_response
*
response
{
nullptr
};
if
(
m_cb
->
container
.
version
(
nullptr
,
&
response
)
!=
0
)
{
if
(
response
!=
nullptr
&&
response
->
errmsg
)
{
if
(
response
!=
nullptr
&&
(
response
->
errmsg
!=
nullptr
)
)
{
error
.
SetError
(
response
->
errmsg
);
}
else
{
error
.
SetError
(
"Failed to call version callback"
);
}
goto
cleanup
;
}
VersionResponseToGRPC
(
response
,
versionResponse
,
error
);
VersionResponseToGRPC
(
response
,
versionResponse
);
cleanup:
free_container_version_response
(
response
);
}
void
CRIRuntimeServiceImpl
::
UpdateRuntimeConfig
(
const
runtime
::
v1alpha2
::
RuntimeConfig
&
config
,
Errors
&
error
)
void
CRIRuntimeServiceImpl
::
UpdateRuntimeConfig
(
const
runtime
::
v1alpha2
::
RuntimeConfig
&
config
,
Errors
&
/*error*/
)
{
INFO
(
"iSulad cri received runtime config: %s"
,
config
.
network_config
().
pod_cidr
().
c_str
());
if
(
m_pluginManager
!=
nullptr
&&
config
.
has_network_config
()
&&
!
(
config
.
network_config
().
pod_cidr
().
empty
()))
{
...
...
@@ -116,10 +116,9 @@ void CRIRuntimeServiceImpl::UpdateRuntimeConfig(const runtime::v1alpha2::Runtime
config
.
network_config
().
pod_cidr
();
m_pluginManager
->
Event
(
CRIHelpers
::
Constants
::
NET_PLUGIN_EVENT_POD_CIDR_CHANGE
,
events
);
}
return
;
}
std
::
unique_ptr
<
runtime
::
v1alpha2
::
RuntimeStatus
>
CRIRuntimeServiceImpl
::
Status
(
Errors
&
error
)
auto
CRIRuntimeServiceImpl
::
Status
(
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
RuntimeStatus
>
{
std
::
unique_ptr
<
runtime
::
v1alpha2
::
RuntimeStatus
>
status
(
new
(
std
::
nothrow
)
runtime
::
v1alpha2
::
RuntimeStatus
);
if
(
status
==
nullptr
)
{
...
...
@@ -159,11 +158,11 @@ std::unique_ptr<runtime::v1alpha2::RuntimeStatus> CRIRuntimeServiceImpl::Status(
return
status
;
}
std
::
string
CRIRuntimeServiceImpl
::
GetNetNS
(
const
std
::
string
&
podSandboxID
,
Errors
&
err
)
auto
CRIRuntimeServiceImpl
::
GetNetNS
(
const
std
::
string
&
podSandboxID
,
Errors
&
err
)
->
std
::
string
{
int
ret
;
int
ret
=
0
;
char
fullpath
[
PATH_MAX
]
{
0
};
std
::
string
result
{
""
}
;
std
::
string
result
;
const
std
::
string
NetNSFmt
{
"/proc/%d/ns/net"
};
container_inspect
*
inspect_data
=
InspectContainer
(
podSandboxID
,
err
);
...
...
src/daemon/entry/cri/cri_runtime_service.h
浏览文件 @
8c0ee03e
此差异已折叠。
点击以展开。
src/daemon/entry/cri/cri_sandbox.cc
浏览文件 @
8c0ee03e
此差异已折叠。
点击以展开。
src/daemon/entry/cri/cri_sandbox.h
浏览文件 @
8c0ee03e
...
...
@@ -22,7 +22,7 @@ class CRISandboxManagerImpl : public cri::PodSandboxManager {
public:
CRISandboxManagerImpl
()
=
default
;
CRISandboxManagerImpl
(
const
CRISandboxManagerImpl
&
)
=
delete
;
CRISandboxManagerImpl
&
operator
=
(
const
CRISandboxManagerImpl
&
)
=
delete
;
auto
operator
=
(
const
CRISandboxManagerImpl
&
)
->
CRISandboxManagerImpl
&
=
delete
;
virtual
~
CRISandboxManagerImpl
()
=
default
;
};
...
...
src/daemon/entry/cri/cri_security_context.cc
浏览文件 @
8c0ee03e
...
...
@@ -13,10 +13,10 @@
* Description: provide cri security context functions
*********************************************************************************/
#include "cri_security_context.h"
#include <memory>
#include "cri_runtime_service.h"
#include "utils.h"
#include "isula_libutils/log.h"
#include "utils.h"
#include <memory>
namespace
CRISecurity
{
static
void
ModifyContainerConfig
(
const
runtime
::
v1alpha2
::
LinuxContainerSecurityContext
&
sc
,
...
...
@@ -40,7 +40,7 @@ static void ModifyHostConfigCapabilities(const runtime::v1alpha2::LinuxContainer
}
const
google
::
protobuf
::
RepeatedPtrField
<
std
::
string
>
&
capAdd
=
sc
.
capabilities
().
add_capabilities
();
if
(
capAdd
.
size
()
>
0
)
{
if
(
!
capAdd
.
empty
()
)
{
if
(
static_cast
<
size_t
>
(
capAdd
.
size
())
>
SIZE_MAX
/
sizeof
(
char
*
))
{
error
.
SetError
(
"Invalid capability add size"
);
return
;
...
...
@@ -56,7 +56,7 @@ static void ModifyHostConfigCapabilities(const runtime::v1alpha2::LinuxContainer
}
}
const
google
::
protobuf
::
RepeatedPtrField
<
std
::
string
>
&
capDrop
=
sc
.
capabilities
().
drop_capabilities
();
if
(
capDrop
.
size
()
>
0
)
{
if
(
!
capDrop
.
empty
()
)
{
if
(
static_cast
<
size_t
>
(
capDrop
.
size
())
>
SIZE_MAX
/
sizeof
(
char
*
))
{
error
.
SetError
(
"Invalid capability drop size"
);
return
;
...
...
@@ -101,12 +101,12 @@ static void ModifyHostConfigNoNewPrivs(const runtime::v1alpha2::LinuxContainerSe
static
void
ModifyHostConfigscSupplementalGroups
(
const
runtime
::
v1alpha2
::
LinuxContainerSecurityContext
&
sc
,
host_config
*
hostConfig
,
Errors
&
error
)
{
if
(
sc
.
supplemental_groups
().
size
()
==
0
)
{
if
(
sc
.
supplemental_groups
().
empty
()
)
{
return
;
}
const
google
::
protobuf
::
RepeatedField
<
google
::
protobuf
::
int64
>
&
groups
=
sc
.
supplemental_groups
();
if
(
groups
.
size
()
>
0
)
{
if
(
!
groups
.
empty
()
)
{
if
(
static_cast
<
size_t
>
(
groups
.
size
())
>
SIZE_MAX
/
sizeof
(
char
*
))
{
error
.
SetError
(
"Invalid group size"
);
return
;
...
...
@@ -172,7 +172,7 @@ static void ModifyHostNetworkOptionForSandbox(const runtime::v1alpha2::Namespace
}
static
void
ModifyContainerNamespaceOptions
(
const
runtime
::
v1alpha2
::
NamespaceOption
&
nsOpts
,
const
std
::
string
&
podSandboxID
,
host_config
*
hostConfig
,
Errors
&
error
)
const
std
::
string
&
podSandboxID
,
host_config
*
hostConfig
)
{
std
::
string
sandboxNSMode
=
"container:"
+
podSandboxID
;
if
(
nsOpts
.
pid
()
==
runtime
::
v1alpha2
::
NamespaceMode
::
POD
)
{
...
...
@@ -186,8 +186,7 @@ static void ModifyContainerNamespaceOptions(const runtime::v1alpha2::NamespaceOp
ModifyHostNetworkOptionForContainer
(
nsOpts
.
network
(),
podSandboxID
,
hostConfig
);
}
static
void
ModifySandboxNamespaceOptions
(
const
runtime
::
v1alpha2
::
NamespaceOption
&
nsOpts
,
host_config
*
hostConfig
,
Errors
&
error
)
static
void
ModifySandboxNamespaceOptions
(
const
runtime
::
v1alpha2
::
NamespaceOption
&
nsOpts
,
host_config
*
hostConfig
)
{
/* set common Namespace options */
ModifyCommonNamespaceOptions
(
nsOpts
,
hostConfig
);
...
...
@@ -223,7 +222,7 @@ void ApplySandboxSecurityContext(const runtime::v1alpha2::LinuxPodSandboxConfig
if
(
error
.
NotEmpty
())
{
return
;
}
ModifySandboxNamespaceOptions
(
sc
->
namespace_options
(),
hc
,
error
);
ModifySandboxNamespaceOptions
(
sc
->
namespace_options
(),
hc
);
}
void
ApplyContainerSecurityContext
(
const
runtime
::
v1alpha2
::
LinuxContainerConfig
&
lc
,
const
std
::
string
&
podSandboxID
,
...
...
@@ -237,11 +236,7 @@ void ApplyContainerSecurityContext(const runtime::v1alpha2::LinuxContainerConfig
return
;
}
}
ModifyContainerNamespaceOptions
(
lc
.
security_context
().
namespace_options
(),
podSandboxID
,
hc
,
error
);
if
(
error
.
NotEmpty
())
{
ERROR
(
"Modify namespace options failed: %s"
,
error
.
GetCMessage
());
return
;
}
ModifyContainerNamespaceOptions
(
lc
.
security_context
().
namespace_options
(),
podSandboxID
,
hc
);
}
}
// namespace CRISecurity
src/daemon/entry/cri/cri_security_context.h
浏览文件 @
8c0ee03e
...
...
@@ -15,11 +15,11 @@
#ifndef DAEMON_ENTRY_CRI_CRI_SECURITY_CONTEXT_H
#define DAEMON_ENTRY_CRI_CRI_SECURITY_CONTEXT_H
#include <string>
#include "api.pb.h"
#include "errors.h"
#include "isula_libutils/host_config.h"
#include "isula_libutils/container_config.h"
#include "isula_libutils/host_config.h"
#include <string>
namespace
CRISecurity
{
void
ApplySandboxSecurityContext
(
const
runtime
::
v1alpha2
::
LinuxPodSandboxConfig
&
lc
,
container_config
*
config
,
...
...
src/daemon/entry/cri/cri_services.h
浏览文件 @
8c0ee03e
...
...
@@ -15,9 +15,9 @@
#ifndef DAEMON_ENTRY_CRI_CRI_SERVICES_H
#define DAEMON_ENTRY_CRI_CRI_SERVICES_H
#include <string>
#include <memory>
#include <cstdint>
#include <memory>
#include <string>
#include <vector>
#include "api.pb.h"
...
...
@@ -32,9 +32,10 @@ public:
class
ContainerManager
{
public:
virtual
std
::
string
CreateContainer
(
const
std
::
string
&
podSandboxID
,
const
runtime
::
v1alpha2
::
ContainerConfig
&
containerConfig
,
const
runtime
::
v1alpha2
::
PodSandboxConfig
&
podSandboxConfig
,
Errors
&
error
)
=
0
;
virtual
auto
CreateContainer
(
const
std
::
string
&
podSandboxID
,
const
runtime
::
v1alpha2
::
ContainerConfig
&
containerConfig
,
const
runtime
::
v1alpha2
::
PodSandboxConfig
&
podSandboxConfig
,
Errors
&
error
)
->
std
::
string
=
0
;
virtual
void
StartContainer
(
const
std
::
string
&
containerID
,
Errors
&
error
)
=
0
;
...
...
@@ -50,8 +51,8 @@ public:
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
ContainerStats
>>
*
containerstats
,
Errors
&
error
)
=
0
;
virtual
std
::
unique_ptr
<
runtime
::
v1alpha2
::
ContainerStatus
>
ContainerStatus
(
const
std
::
string
&
containerID
,
Errors
&
error
)
=
0
;
virtual
auto
ContainerStatus
(
const
std
::
string
&
containerID
,
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
ContainerStatus
>
=
0
;
virtual
void
UpdateContainerResources
(
const
std
::
string
&
containerID
,
const
runtime
::
v1alpha2
::
LinuxContainerResources
&
resources
,
...
...
@@ -69,15 +70,15 @@ public:
class
PodSandboxManager
{
public:
virtual
std
::
string
RunPodSandbox
(
const
runtime
::
v1alpha2
::
PodSandboxConfig
&
config
,
const
std
::
string
&
runtimeHandler
,
Errors
&
error
)
=
0
;
virtual
auto
RunPodSandbox
(
const
runtime
::
v1alpha2
::
PodSandboxConfig
&
config
,
const
std
::
string
&
runtimeHandler
,
Errors
&
error
)
->
std
::
string
=
0
;
virtual
void
StopPodSandbox
(
const
std
::
string
&
podSandboxID
,
Errors
&
error
)
=
0
;
virtual
void
RemovePodSandbox
(
const
std
::
string
&
podSandboxID
,
Errors
&
error
)
=
0
;
virtual
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandboxStatus
>
PodSandboxStatus
(
const
std
::
string
&
podSandboxID
,
Errors
&
error
)
=
0
;
virtual
auto
PodSandboxStatus
(
const
std
::
string
&
podSandboxID
,
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandboxStatus
>
=
0
;
virtual
void
ListPodSandbox
(
const
runtime
::
v1alpha2
::
PodSandboxFilter
*
filter
,
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
PodSandbox
>>
*
pods
,
Errors
&
error
)
=
0
;
...
...
@@ -90,7 +91,7 @@ class RuntimeManager {
public:
virtual
void
UpdateRuntimeConfig
(
const
runtime
::
v1alpha2
::
RuntimeConfig
&
config
,
Errors
&
error
)
=
0
;
virtual
std
::
unique_ptr
<
runtime
::
v1alpha2
::
RuntimeStatus
>
Status
(
Errors
&
error
)
=
0
;
virtual
auto
Status
(
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
RuntimeStatus
>
=
0
;
};
class
ImageManagerService
{
...
...
@@ -98,11 +99,11 @@ public:
virtual
void
ListImages
(
const
runtime
::
v1alpha2
::
ImageFilter
&
filter
,
std
::
vector
<
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>>
*
images
,
Errors
&
error
)
=
0
;
virtual
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
ImageStatus
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
=
0
;
virtual
auto
ImageStatus
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
->
std
::
unique_ptr
<
runtime
::
v1alpha2
::
Image
>
=
0
;
virtual
std
::
string
PullImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
const
runtime
::
v1alpha2
::
AuthConfig
&
auth
,
Errors
&
error
)
=
0
;
virtual
auto
PullImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
const
runtime
::
v1alpha2
::
AuthConfig
&
auth
,
Errors
&
error
)
->
std
::
string
=
0
;
virtual
void
RemoveImage
(
const
runtime
::
v1alpha2
::
ImageSpec
&
image
,
Errors
&
error
)
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录