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
 | 
						|
}
 |