Explorar o código

plugins: do not try to contact disabled plugin

Signed-off-by: Tibor Vass <tibor@docker.com>
Tibor Vass %!s(int64=9) %!d(string=hai) anos
pai
achega
84e58e2f89
Modificáronse 1 ficheiros con 8 adicións e 3 borrados
  1. 8 3
      plugin/store/store.go

+ 8 - 3
plugin/store/store.go

@@ -126,7 +126,7 @@ func (ps *Store) updatePluginDB() error {
 	return nil
 	return nil
 }
 }
 
 
-// Get returns a plugin matching the given name and capability.
+// Get returns an enabled plugin matching the given name and capability.
 func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlugin, error) {
 func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlugin, error) {
 	var (
 	var (
 		p   *v2.Plugin
 		p   *v2.Plugin
@@ -151,7 +151,12 @@ func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlug
 			p.Lock()
 			p.Lock()
 			p.RefCount += mode
 			p.RefCount += mode
 			p.Unlock()
 			p.Unlock()
-			return p.FilterByCap(capability)
+			if p.IsEnabled() {
+				return p.FilterByCap(capability)
+			}
+			// Plugin was found but it is disabled, so we should not fall back to legacy plugins
+			// but we should error out right away
+			return nil, ErrNotFound(fullName)
 		}
 		}
 		if _, ok := err.(ErrNotFound); !ok {
 		if _, ok := err.(ErrNotFound); !ok {
 			return nil, err
 			return nil, err
@@ -170,7 +175,7 @@ func (ps *Store) Get(name, capability string, mode int) (plugingetter.CompatPlug
 	return nil, err
 	return nil, err
 }
 }
 
 
-// GetAllByCap returns a list of plugins matching the given capability.
+// GetAllByCap returns a list of enabled plugins matching the given capability.
 func (ps *Store) GetAllByCap(capability string) ([]plugingetter.CompatPlugin, error) {
 func (ps *Store) GetAllByCap(capability string) ([]plugingetter.CompatPlugin, error) {
 	result := make([]plugingetter.CompatPlugin, 0, 1)
 	result := make([]plugingetter.CompatPlugin, 0, 1)