mirror of https://github.com/docker/docs.git
Engine: fix a bug when encoding a job environment to json
This commit is contained in:
parent
5a85456d48
commit
434f06d03d
3
api.go
3
api.go
|
@ -644,6 +644,9 @@ func postContainersStart(srv *Server, version float64, w http.ResponseWriter, r
|
||||||
}
|
}
|
||||||
name := vars["name"]
|
name := vars["name"]
|
||||||
job := srv.Eng.Job("start", name)
|
job := srv.Eng.Job("start", name)
|
||||||
|
if err := job.ImportEnv(HostConfig{}); err != nil {
|
||||||
|
return fmt.Errorf("Couldn't initialize host configuration")
|
||||||
|
}
|
||||||
// allow a nil body for backwards compatibility
|
// allow a nil body for backwards compatibility
|
||||||
if r.Body != nil {
|
if r.Body != nil {
|
||||||
if matchesContentType(r.Header.Get("Content-Type"), "application/json") {
|
if matchesContentType(r.Header.Get("Content-Type"), "application/json") {
|
||||||
|
|
|
@ -149,10 +149,22 @@ func (job *Job) DecodeEnv(src io.Reader) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (job *Job) EncodeEnv(dst io.Writer) error {
|
func (job *Job) EncodeEnv(dst io.Writer) error {
|
||||||
return json.NewEncoder(dst).Encode(job.Environ())
|
m := make(map[string]interface{})
|
||||||
|
for k, v := range job.Environ() {
|
||||||
|
var val interface{}
|
||||||
|
if err := json.Unmarshal([]byte(v), &val); err == nil {
|
||||||
|
m[k] = val
|
||||||
|
} else {
|
||||||
|
m[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err := json.NewEncoder(dst).Encode(&m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (job *Job) ExportEnv(dst interface{}) error {
|
func (job *Job) ExportEnv(dst interface{}) (err error) {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
if err := job.EncodeEnv(&buf); err != nil {
|
if err := job.EncodeEnv(&buf); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue