1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #29372 from tophj-ibm/fix-plugin-disable-error

[plugins] return err when failing remove
This commit is contained in:
Vincent Demeester 2016-12-15 09:18:35 +01:00 committed by GitHub
commit d0ab04ac16

View file

@ -5,7 +5,6 @@ package plugin
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
@ -23,6 +22,7 @@ import (
"github.com/docker/docker/plugin/distribution" "github.com/docker/docker/plugin/distribution"
"github.com/docker/docker/plugin/v2" "github.com/docker/docker/plugin/v2"
"github.com/docker/docker/reference" "github.com/docker/docker/reference"
"github.com/pkg/errors"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -268,7 +268,7 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
} }
// Remove deletes plugin's root directory. // Remove deletes plugin's root directory.
func (pm *Manager) Remove(name string, config *types.PluginRmConfig) error { func (pm *Manager) Remove(name string, config *types.PluginRmConfig) (err error) {
p, err := pm.pluginStore.GetByName(name) p, err := pm.pluginStore.GetByName(name)
pm.mu.RLock() pm.mu.RLock()
c := pm.cMap[p] c := pm.cMap[p]
@ -294,12 +294,18 @@ func (pm *Manager) Remove(name string, config *types.PluginRmConfig) error {
} }
id := p.GetID() id := p.GetID()
pm.pluginStore.Remove(p)
pluginDir := filepath.Join(pm.libRoot, id) pluginDir := filepath.Join(pm.libRoot, id)
if err := os.RemoveAll(pluginDir); err != nil {
logrus.Warnf("unable to remove %q from plugin remove: %v", pluginDir, err) defer func() {
if err == nil || config.ForceRemove {
pm.pluginStore.Remove(p)
pm.pluginEventLogger(id, name, "remove")
}
}()
if err = os.RemoveAll(pluginDir); err != nil {
return errors.Wrap(err, "failed to remove plugin directory")
} }
pm.pluginEventLogger(id, name, "remove")
return nil return nil
} }