Jelajahi Sumber

Fix removing plugins

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
(cherry picked from commit 5e156fd3d4b21267caca093dd0df7ed6bce85535)
Brian Goff 9 tahun lalu
induk
melakukan
be82ff5c7f
2 mengubah file dengan 9 tambahan dan 7 penghapusan
  1. 0 4
      plugin/backend.go
  2. 9 3
      plugin/manager.go

+ 0 - 4
plugin/backend.go

@@ -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
 	}

+ 9 - 3
plugin/manager.go

@@ -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
 }