From b3bd7f80afea51d42d3bd2d194d36a6852a7d51f Mon Sep 17 00:00:00 2001 From: Anusha Ragunathan Date: Mon, 26 Sep 2016 11:06:26 -0700 Subject: [PATCH] Add Handle method to plugingetter. This is necessary for IPAM and network plugins. Signed-off-by: Anusha Ragunathan --- plugin/getter/interface.go | 1 + plugin/store/store.go | 7 +++++++ plugin/store/store_experimental.go | 10 ++++------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugin/getter/interface.go b/plugin/getter/interface.go index 1c1977d300..12558437e6 100644 --- a/plugin/getter/interface.go +++ b/plugin/getter/interface.go @@ -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)) } diff --git a/plugin/store/store.go b/plugin/store/store.go index 2ba1b4ad94..46103379c3 100644 --- a/plugin/store/store.go +++ b/plugin/store/store.go @@ -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) +} diff --git a/plugin/store/store_experimental.go b/plugin/store/store_experimental.go index a1fe10851f..6e9e0b7d91 100644 --- a/plugin/store/store_experimental.go +++ b/plugin/store/store_experimental.go @@ -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 {