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  }