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
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"path/filepath"
@ -114,11 +117,16 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
return err
}
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 {
return err
}
defer config.Close()
rootfs, err := archive.Tar(filepath.Join(dest, "rootfs"), archive.Gzip)
if err != nil {
@ -126,7 +134,7 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
}
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.
// Since digest needs to be written to the ProgressWriter.
return err