github.com/moby/docker@v26.1.3+incompatible/daemon/cluster/convert/pluginadapter.go (about) 1 package convert 2 3 import ( 4 "github.com/docker/docker/pkg/plugingetter" 5 "github.com/moby/swarmkit/v2/node/plugin" 6 ) 7 8 // SwarmPluginGetter adapts a plugingetter.PluginGetter to a Swarmkit plugin.Getter. 9 func SwarmPluginGetter(pg plugingetter.PluginGetter) plugin.Getter { 10 return pluginGetter{pg} 11 } 12 13 type pluginGetter struct { 14 pg plugingetter.PluginGetter 15 } 16 17 var _ plugin.Getter = (*pluginGetter)(nil) 18 19 type swarmPlugin struct { 20 plugingetter.CompatPlugin 21 } 22 23 func (p swarmPlugin) Client() plugin.Client { 24 return p.CompatPlugin.Client() 25 } 26 27 func (g pluginGetter) Get(name string, capability string) (plugin.Plugin, error) { 28 p, err := g.pg.Get(name, capability, plugingetter.Lookup) 29 if err != nil { 30 return nil, err 31 } 32 return swarmPlugin{p}, nil 33 } 34 35 func (g pluginGetter) GetAllManagedPluginsByCap(capability string) []plugin.Plugin { 36 pp := g.pg.GetAllManagedPluginsByCap(capability) 37 ret := make([]plugin.Plugin, len(pp)) 38 for i, p := range pp { 39 ret[i] = swarmPlugin{p} 40 } 41 return ret 42 }