Merge pull request #25597 from vieux/check_plugin_manifest_json

check plugin manifest is correctly formatted before push
This commit is contained in:
Tõnis Tiigi 2016-08-15 19:27:50 -07:00 committed by GitHub
commit f5ef498289
1 changed files with 11 additions and 3 deletions

View File

@ -3,7 +3,10 @@
package plugin package plugin
import ( import (
"bytes"
"encoding/json"
"fmt" "fmt"
"io/ioutil"
"net/http" "net/http"
"os" "os"
"path/filepath" "path/filepath"
@ -114,11 +117,16 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
return err return err
} }
dest := filepath.Join(pm.libRoot, p.PluginObj.ID) dest := filepath.Join(pm.libRoot, p.PluginObj.ID)
config, err := os.Open(filepath.Join(dest, "manifest.json")) config, err := ioutil.ReadFile(filepath.Join(dest, "manifest.json"))
if err != nil {
return err
}
var dummy types.Plugin
err = json.Unmarshal(config, &dummy)
if err != nil { if err != nil {
return err return err
} }
defer config.Close()
rootfs, err := archive.Tar(filepath.Join(dest, "rootfs"), archive.Gzip) rootfs, err := archive.Tar(filepath.Join(dest, "rootfs"), archive.Gzip)
if err != nil { if err != nil {
@ -126,7 +134,7 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
} }
defer rootfs.Close() defer rootfs.Close()
_, err = distribution.Push(name, pm.registryService, metaHeader, authConfig, config, rootfs) _, err = distribution.Push(name, pm.registryService, metaHeader, authConfig, ioutil.NopCloser(bytes.NewReader(config)), rootfs)
// XXX: Ignore returning digest for now. // XXX: Ignore returning digest for now.
// Since digest needs to be written to the ProgressWriter. // Since digest needs to be written to the ProgressWriter.
return err return err