Browse Source

Merge pull request #28512 from anusha-ragunathan/fix_enable

Cleanup after plugin install.
Sebastiaan van Stijn 8 years ago
parent
commit
a58e3e7fef
2 changed files with 10 additions and 3 deletions
  1. 9 3
      client/plugin_install.go
  2. 1 0
      plugin/manager_linux.go

+ 9 - 3
client/plugin_install.go

@@ -10,7 +10,7 @@ import (
 )
 )
 
 
 // PluginInstall installs a plugin
 // PluginInstall installs a plugin
-func (cli *Client) PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) error {
+func (cli *Client) PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (err error) {
 	// FIXME(vdemeester) name is a ref, we might want to parse/validate it here.
 	// FIXME(vdemeester) name is a ref, we might want to parse/validate it here.
 	query := url.Values{}
 	query := url.Values{}
 	query.Set("name", name)
 	query.Set("name", name)
@@ -27,6 +27,14 @@ func (cli *Client) PluginInstall(ctx context.Context, name string, options types
 		ensureReaderClosed(resp)
 		ensureReaderClosed(resp)
 		return err
 		return err
 	}
 	}
+
+	defer func() {
+		if err != nil {
+			delResp, _ := cli.delete(ctx, "/plugins/"+name, nil, nil)
+			ensureReaderClosed(delResp)
+		}
+	}()
+
 	var privileges types.PluginPrivileges
 	var privileges types.PluginPrivileges
 	if err := json.NewDecoder(resp.body).Decode(&privileges); err != nil {
 	if err := json.NewDecoder(resp.body).Decode(&privileges); err != nil {
 		ensureReaderClosed(resp)
 		ensureReaderClosed(resp)
@@ -40,8 +48,6 @@ func (cli *Client) PluginInstall(ctx context.Context, name string, options types
 			return err
 			return err
 		}
 		}
 		if !accept {
 		if !accept {
-			resp, _ := cli.delete(ctx, "/plugins/"+name, nil, nil)
-			ensureReaderClosed(resp)
 			return pluginPermissionDenied{name}
 			return pluginPermissionDenied{name}
 		}
 		}
 	}
 	}

+ 1 - 0
plugin/manager_linux.go

@@ -36,6 +36,7 @@ func (pm *Manager) enable(p *v2.Plugin, force bool) error {
 		p.Lock()
 		p.Lock()
 		p.Restart = false
 		p.Restart = false
 		p.Unlock()
 		p.Unlock()
+		shutdownPlugin(p, pm.containerdClient)
 		return err
 		return err
 	}
 	}