diff --git a/plugin/backend.go b/plugin/backend.go index 5b2d9f46a63b9..477a05c14cbef 100644 --- a/plugin/backend.go +++ b/plugin/backend.go @@ -35,7 +35,7 @@ func (pm *Manager) Enable(name string) error { if err != nil { return err } - if err := pm.enable(p); err != nil { + if err := pm.enable(p, false); err != nil { return err } pm.pluginEventLogger(p.PluginObj.ID, name, "enable") diff --git a/plugin/manager.go b/plugin/manager.go index 2dcc76f111c3e..5914bf79b9467 100644 --- a/plugin/manager.go +++ b/plugin/manager.go @@ -321,7 +321,7 @@ func (pm *Manager) init() error { if requiresManualRestore { // if liveRestore is not enabled, the plugin will be stopped now so we should enable it - if err := pm.enable(p); err != nil { + if err := pm.enable(p, true); err != nil { logrus.Errorf("failed to enable plugin '%s': %s", p.Name(), err) } } diff --git a/plugin/manager_linux.go b/plugin/manager_linux.go index b247aae912350..06db3d41aca90 100644 --- a/plugin/manager_linux.go +++ b/plugin/manager_linux.go @@ -20,8 +20,8 @@ import ( "github.com/opencontainers/specs/specs-go" ) -func (pm *Manager) enable(p *plugin) error { - if p.PluginObj.Active { +func (pm *Manager) enable(p *plugin, force bool) error { + if p.PluginObj.Active && !force { return fmt.Errorf("plugin %s is already enabled", p.Name()) } spec, err := pm.initSpec(p) diff --git a/plugin/manager_windows.go b/plugin/manager_windows.go index cbdb78b682604..d423254e7431b 100644 --- a/plugin/manager_windows.go +++ b/plugin/manager_windows.go @@ -8,7 +8,7 @@ import ( "github.com/opencontainers/specs/specs-go" ) -func (pm *Manager) enable(p *plugin) error { +func (pm *Manager) enable(p *plugin, force bool) error { return fmt.Errorf("Not implemented") }