Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
| ... | ... |
@@ -345,11 +345,11 @@ func postCommit(srv *Server, version float64, w http.ResponseWriter, r *http.Req |
| 345 | 345 |
return err |
| 346 | 346 |
} |
| 347 | 347 |
var ( |
| 348 |
- config = &Config{}
|
|
| 348 |
+ config engine.Env |
|
| 349 | 349 |
env engine.Env |
| 350 | 350 |
job = srv.Eng.Job("commit", r.Form.Get("container"))
|
| 351 | 351 |
) |
| 352 |
- if err := json.NewDecoder(r.Body).Decode(config); err != nil && err != io.EOF {
|
|
| 352 |
+ if err := config.Import(r.Body); err != nil {
|
|
| 353 | 353 |
utils.Errorf("%s", err)
|
| 354 | 354 |
} |
| 355 | 355 |
|
| ... | ... |
@@ -357,7 +357,7 @@ func postCommit(srv *Server, version float64, w http.ResponseWriter, r *http.Req |
| 357 | 357 |
job.Setenv("tag", r.Form.Get("tag"))
|
| 358 | 358 |
job.Setenv("author", r.Form.Get("author"))
|
| 359 | 359 |
job.Setenv("comment", r.Form.Get("comment"))
|
| 360 |
- job.SetenvJson("config", config)
|
|
| 360 |
+ job.SetenvSubEnv("config", &config)
|
|
| 361 | 361 |
|
| 362 | 362 |
var id string |
| 363 | 363 |
job.Stdout.AddString(&id) |
| ... | ... |
@@ -704,18 +704,14 @@ func postContainersAttach(srv *Server, version float64, w http.ResponseWriter, r |
| 704 | 704 |
return fmt.Errorf("Missing parameter")
|
| 705 | 705 |
} |
| 706 | 706 |
|
| 707 |
- // TODO: replace the buffer by job.AddEnv() |
|
| 708 | 707 |
var ( |
| 709 | 708 |
job = srv.Eng.Job("inspect", vars["name"], "container")
|
| 710 |
- buffer = bytes.NewBuffer(nil) |
|
| 711 |
- c Container |
|
| 709 |
+ c, err = job.Stdout.AddEnv() |
|
| 712 | 710 |
) |
| 713 |
- job.Stdout.Add(buffer) |
|
| 714 |
- if err := job.Run(); err != nil {
|
|
| 711 |
+ if err != nil {
|
|
| 715 | 712 |
return err |
| 716 | 713 |
} |
| 717 |
- |
|
| 718 |
- if err := json.Unmarshal(buffer.Bytes(), &c); err != nil {
|
|
| 714 |
+ if err = job.Run(); err != nil {
|
|
| 719 | 715 |
return err |
| 720 | 716 |
} |
| 721 | 717 |
|
| ... | ... |
@@ -742,7 +738,7 @@ func postContainersAttach(srv *Server, version float64, w http.ResponseWriter, r |
| 742 | 742 |
|
| 743 | 743 |
fmt.Fprintf(outStream, "HTTP/1.1 200 OK\r\nContent-Type: application/vnd.docker.raw-stream\r\n\r\n") |
| 744 | 744 |
|
| 745 |
- if !c.Config.Tty && version >= 1.6 {
|
|
| 745 |
+ if c.GetSubEnv("Config") != nil && !c.GetSubEnv("Config").GetBool("Tty") && version >= 1.6 {
|
|
| 746 | 746 |
errStream = utils.NewStdWriter(outStream, utils.Stderr) |
| 747 | 747 |
outStream = utils.NewStdWriter(outStream, utils.Stdout) |
| 748 | 748 |
} else {
|
| ... | ... |
@@ -86,6 +86,28 @@ func (env *Env) GetList(key string) []string {
|
| 86 | 86 |
return l |
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 |
+func (env *Env) GetSubEnv(key string) *Env {
|
|
| 90 |
+ sval := env.Get(key) |
|
| 91 |
+ if sval == "" {
|
|
| 92 |
+ return nil |
|
| 93 |
+ } |
|
| 94 |
+ buf := bytes.NewBufferString(sval) |
|
| 95 |
+ var sub Env |
|
| 96 |
+ if err := sub.Decode(buf); err != nil {
|
|
| 97 |
+ return nil |
|
| 98 |
+ } |
|
| 99 |
+ return &sub |
|
| 100 |
+} |
|
| 101 |
+ |
|
| 102 |
+func (env *Env) SetSubEnv(key string, sub *Env) error {
|
|
| 103 |
+ var buf bytes.Buffer |
|
| 104 |
+ if err := sub.Encode(&buf); err != nil {
|
|
| 105 |
+ return err |
|
| 106 |
+ } |
|
| 107 |
+ env.Set(key, string(buf.Bytes())) |
|
| 108 |
+ return nil |
|
| 109 |
+} |
|
| 110 |
+ |
|
| 89 | 111 |
func (env *Env) GetJson(key string, iface interface{}) error {
|
| 90 | 112 |
sval := env.Get(key) |
| 91 | 113 |
if sval == "" {
|
| ... | ... |
@@ -118,6 +118,14 @@ func (job *Job) SetenvBool(key string, value bool) {
|
| 118 | 118 |
job.env.SetBool(key, value) |
| 119 | 119 |
} |
| 120 | 120 |
|
| 121 |
+func (job *Job) GetenvSubEnv(key string) *Env {
|
|
| 122 |
+ return job.env.GetSubEnv(key) |
|
| 123 |
+} |
|
| 124 |
+ |
|
| 125 |
+func (job *Job) SetenvSubEnv(key string, value *Env) error {
|
|
| 126 |
+ return job.env.SetSubEnv(key, value) |
|
| 127 |
+} |
|
| 128 |
+ |
|
| 121 | 129 |
func (job *Job) GetenvInt64(key string) int64 {
|
| 122 | 130 |
return job.env.GetInt64(key) |
| 123 | 131 |
} |
| ... | ... |
@@ -1656,8 +1656,7 @@ func (srv *Server) ContainerCreate(job *engine.Job) engine.Status {
|
| 1656 | 1656 |
} |
| 1657 | 1657 |
resolvConf, err := utils.GetResolvConf() |
| 1658 | 1658 |
if err != nil {
|
| 1659 |
- job.Error(err) |
|
| 1660 |
- return engine.StatusErr |
|
| 1659 |
+ return job.Error(err) |
|
| 1661 | 1660 |
} |
| 1662 | 1661 |
if !config.NetworkDisabled && len(config.Dns) == 0 && len(srv.runtime.config.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
|
| 1663 | 1662 |
job.Errorf("WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: %v\n", defaultDns)
|