46 lines
		
	
	
		
			992 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			992 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package plugin
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"fmt"
 | |
| 	"path/filepath"
 | |
| 
 | |
| 	"github.com/containerd/containerd/events"
 | |
| 	"github.com/containerd/containerd/log"
 | |
| )
 | |
| 
 | |
| func NewContext(ctx context.Context, plugins map[PluginType]map[string]interface{}, root, state, id string) *InitContext {
 | |
| 	return &InitContext{
 | |
| 		plugins: plugins,
 | |
| 		Root:    filepath.Join(root, id),
 | |
| 		State:   filepath.Join(state, id),
 | |
| 		Context: log.WithModule(ctx, id),
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type InitContext struct {
 | |
| 	Root    string
 | |
| 	State   string
 | |
| 	Address string
 | |
| 	Context context.Context
 | |
| 	Config  interface{}
 | |
| 	Events  *events.Exchange
 | |
| 
 | |
| 	plugins map[PluginType]map[string]interface{}
 | |
| }
 | |
| 
 | |
| func (i *InitContext) Get(t PluginType) (interface{}, error) {
 | |
| 	for _, v := range i.plugins[t] {
 | |
| 		return v, nil
 | |
| 	}
 | |
| 	return nil, fmt.Errorf("no plugins registered for %s", t)
 | |
| }
 | |
| 
 | |
| func (i *InitContext) GetAll(t PluginType) (map[string]interface{}, error) {
 | |
| 	p, ok := i.plugins[t]
 | |
| 	if !ok {
 | |
| 		return nil, fmt.Errorf("no plugins registered for %s", t)
 | |
| 	}
 | |
| 	return p, nil
 | |
| }
 | 
