sandbox: add sandbox controller v2

Signed-off-by: Abel Feng <fshb1988@gmail.com>
This commit is contained in:
Abel Feng
2024-02-21 15:42:31 +08:00
parent 37943cf6e4
commit e4df672ab8
8 changed files with 71 additions and 18 deletions

View File

@@ -48,6 +48,7 @@ func init() {
ID: "cri",
Requires: []plugin.Type{
plugins.CRIServicePlugin,
plugins.PodSandboxPlugin,
plugins.SandboxControllerPlugin,
plugins.NRIApiPlugin,
plugins.EventPlugin,
@@ -237,13 +238,21 @@ func getNRIAPI(ic *plugin.InitContext) nriservice.API {
}
func getSandboxControllers(ic *plugin.InitContext) (map[string]sandbox.Controller, error) {
sc := make(map[string]sandbox.Controller)
sandboxers, err := ic.GetByType(plugins.SandboxControllerPlugin)
if err != nil {
return nil, err
}
sc := make(map[string]sandbox.Controller)
for name, p := range sandboxers {
sc[name] = p.(sandbox.Controller)
}
podSandboxers, err := ic.GetByType(plugins.PodSandboxPlugin)
if err != nil {
return nil, err
}
for name, p := range podSandboxers {
sc[name] = p.(sandbox.Controller)
}
return sc, nil
}

View File

@@ -41,20 +41,29 @@ func init() {
Type: plugins.GRPCPlugin,
ID: "sandbox-controllers",
Requires: []plugin.Type{
plugins.PodSandboxPlugin,
plugins.SandboxControllerPlugin,
plugins.EventPlugin,
},
InitFn: func(ic *plugin.InitContext) (interface{}, error) {
sandboxers, err := ic.GetByType(plugins.SandboxControllerPlugin)
sc := make(map[string]sandbox.Controller)
sandboxers, err := ic.GetByType(plugins.PodSandboxPlugin)
if err != nil {
return nil, err
}
sc := make(map[string]sandbox.Controller)
for name, p := range sandboxers {
sc[name] = p.(sandbox.Controller)
}
sandboxersV2, err := ic.GetByType(plugins.SandboxControllerPlugin)
if err != nil {
return nil, err
}
for name, p := range sandboxersV2 {
sc[name] = p.(sandbox.Controller)
}
ep, err := ic.GetSingle(plugins.EventPlugin)
if err != nil {
return nil, err

View File

@@ -63,6 +63,8 @@ const (
TransferPlugin plugin.Type = "io.containerd.transfer.v1"
// SandboxStorePlugin implements a sandbox store
SandboxStorePlugin plugin.Type = "io.containerd.sandbox.store.v1"
// PodSandboxPlugin is a special sandbox controller which use pause container as a sandbox.
PodSandboxPlugin plugin.Type = "io.containerd.podsandbox.controller.v1"
// SandboxControllerPlugin implements a sandbox controller
SandboxControllerPlugin plugin.Type = "io.containerd.sandbox.controller.v1"
// ImageVerifierPlugin implements an image verifier service