
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: update events package to include emitter and use envelope proto Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: add events service Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: enable events service and update ctr events to use events service Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> event listeners Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: helper func for emitting in services Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: improved cli for containers and tasks Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> create event envelope with poster Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: introspect event data to use for type url Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: use pb encoding; add event types Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: instrument content and snapshot services with events Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: instrument image service with events Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: instrument namespace service with events Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: add namespace support Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: only send events from namespace requested from client Signed-off-by: Evan Hazlett <ejhazlett@gmail.com> events: switch to go-events for broadcasting Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
40 lines
727 B
Go
40 lines
727 B
Go
package plugin
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/containerd/containerd/events"
|
|
)
|
|
|
|
func NewContext(plugins map[PluginType][]interface{}) *InitContext {
|
|
return &InitContext{
|
|
plugins: plugins,
|
|
}
|
|
}
|
|
|
|
type InitContext struct {
|
|
Root string
|
|
Context context.Context
|
|
Config interface{}
|
|
Emitter *events.Emitter
|
|
|
|
plugins map[PluginType][]interface{}
|
|
}
|
|
|
|
func (i *InitContext) Get(t PluginType) (interface{}, error) {
|
|
p := i.plugins[t]
|
|
if len(p) == 0 {
|
|
return nil, fmt.Errorf("no plugins registered for %s", t)
|
|
}
|
|
return p[0], nil
|
|
}
|
|
|
|
func (i *InitContext) GetAll(t PluginType) ([]interface{}, error) {
|
|
p, ok := i.plugins[t]
|
|
if !ok {
|
|
return nil, fmt.Errorf("no plugins registered for %s", t)
|
|
}
|
|
return p, nil
|
|
}
|