Fix removing plugins

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit 5e156fd3d4)
This commit is contained in:
Brian Goff 2016-06-15 11:21:31 -04:00 committed by Tibor Vass
parent efc10a92ef
commit be82ff5c7f
2 changed files with 9 additions and 7 deletions

View file

@ -76,10 +76,6 @@ func (pm *Manager) Pull(name string, metaHeader http.Header, authConfig *types.A
}
p := pm.newPlugin(ref, pluginID)
if ref, ok := ref.(reference.NamedTagged); ok {
p.p.Tag = ref.Tag()
}
if err := pm.initPlugin(p); err != nil {
return nil, err
}

View file

@ -58,7 +58,12 @@ func (p *plugin) Client() *plugins.Client {
}
func (p *plugin) Name() string {
return p.p.Name
name := p.p.Name
if len(p.p.Tag) > 0 {
// TODO: this feels hacky, maybe we should be storing the distribution reference rather than splitting these
name += ":" + p.p.Tag
}
return name
}
func (pm *Manager) newPlugin(ref reference.Named, id string) *plugin {
@ -300,12 +305,13 @@ func (pm *Manager) initPlugin(p *plugin) error {
func (pm *Manager) remove(p *plugin) error {
if p.p.Active {
return fmt.Errorf("plugin %s is active", p.p.Name)
return fmt.Errorf("plugin %s is active", p.Name())
}
pm.Lock() // fixme: lock single record
defer pm.Unlock()
os.RemoveAll(p.stateSourcePath)
delete(pm.plugins, p.p.Name)
delete(pm.plugins, p.p.ID)
delete(pm.nameToID, p.Name())
pm.save()
return nil
}