Generalize the plugin package

Remove containerd specific parts of the plugin package to prepare its
move out of the main repository. Separate the plugin registration
singleton into a separate package.

Separating out the plugin package and registration makes it easier to
implement external plugins without creating a dependency loop.

Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
Derek McGowan
2023-10-12 15:36:02 -07:00
parent a80606bc2d
commit 7b2a918213
65 changed files with 363 additions and 299 deletions

View File

@@ -28,6 +28,7 @@ import (
"github.com/containerd/containerd/errdefs"
"github.com/containerd/containerd/filters"
"github.com/containerd/containerd/plugin"
"github.com/containerd/containerd/plugin/registry"
"github.com/containerd/containerd/plugins"
ptypes "github.com/containerd/containerd/protobuf/types"
"github.com/containerd/containerd/services"
@@ -39,7 +40,7 @@ import (
)
func init() {
plugin.Register(&plugin.Registration{
registry.Register(&plugin.Registration{
Type: plugins.ServicePlugin,
ID: services.IntrospectionService,
Requires: []plugin.Type{},
@@ -47,7 +48,7 @@ func init() {
// this service fetches all plugins through the plugin set of the plugin context
return &Local{
plugins: ic.Plugins(),
root: ic.Root,
root: ic.Properties[plugins.PropertyRootDir],
}, nil
},
})

View File

@@ -22,6 +22,7 @@ import (
api "github.com/containerd/containerd/api/services/introspection/v1"
"github.com/containerd/containerd/plugin"
"github.com/containerd/containerd/plugin/registry"
"github.com/containerd/containerd/plugins"
ptypes "github.com/containerd/containerd/protobuf/types"
"github.com/containerd/containerd/services"
@@ -29,7 +30,7 @@ import (
)
func init() {
plugin.Register(&plugin.Registration{
registry.Register(&plugin.Registration{
Type: plugins.GRPCPlugin,
ID: "introspection",
Requires: []plugin.Type{plugins.ServicePlugin},
@@ -52,7 +53,7 @@ func init() {
if !ok {
return nil, errors.New("could not create a local client for introspection service")
}
localClient.UpdateLocal(ic.Root)
localClient.UpdateLocal(ic.Properties[plugins.PropertyRootDir])
return &server{
local: localClient,