Add Handle method to plugingetter.

This is necessary for IPAM and network plugins.

Signed-off-by: Anusha Ragunathan <anusha@docker.com>
Upstream-commit: b3bd7f80afea51d42d3bd2d194d36a6852a7d51f
Component: engine
This commit is contained in:
Anusha Ragunathan
2016-09-26 11:06:26 -07:00
parent a1a96e1887
commit fe313a4545
3 changed files with 12 additions and 6 deletions

View File

@ -22,4 +22,5 @@ type CompatPlugin interface {
type PluginGetter interface {
Get(name, capability string, mode int) (CompatPlugin, error)
GetAllByCap(capability string) ([]CompatPlugin, error)
Handle(capability string, callback func(string, *plugins.Client))
}

View File

@ -24,3 +24,10 @@ func (ps Store) GetAllByCap(capability string) ([]getter.CompatPlugin, error) {
func (ps Store) Get(name, capability string, _ int) (getter.CompatPlugin, error) {
return plugins.Get(name, capability)
}
// Handle sets a callback for a given capability. It is only used by network
// and ipam drivers during plugin registration. The callback registers the
// driver with the subsystem (network, ipam).
func (ps *Store) Handle(capability string, callback func(string, *plugins.Client)) {
plugins.Handle(capability, callback)
}

View File

@ -208,15 +208,13 @@ func (ps *Store) GetAllByCap(capability string) ([]getter.CompatPlugin, error) {
// Handle sets a callback for a given capability. It is only used by network
// and ipam drivers during plugin registration. The callback registers the
// driver with the subsystem (network, ipam).
func (ps Store) Handle(capability string, callback func(string, *plugins.Client)) {
func (ps *Store) Handle(capability string, callback func(string, *plugins.Client)) {
pluginType := fmt.Sprintf("docker.%s/1", strings.ToLower(capability))
store := &ps
// Register callback with new plugin model.
store.Lock()
store.handlers[pluginType] = callback
store.Unlock()
ps.Lock()
ps.handlers[pluginType] = callback
ps.Unlock()
// Register callback with legacy plugin model.
if allowV1PluginsFallback {