Signed-off-by: Antonio Murdaca <me@runcom.ninja>
Antonio Murdaca authored on 2015/05/02 10:03:35... | ... |
@@ -306,17 +306,10 @@ func (s *Server) postContainersPause(version version.Version, w http.ResponseWri |
306 | 306 |
return err |
307 | 307 |
} |
308 | 308 |
|
309 |
- name := vars["name"] |
|
310 |
- cont, err := s.daemon.Get(name) |
|
311 |
- if err != nil { |
|
309 |
+ if err := s.daemon.ContainerPause(vars["name"]); err != nil { |
|
312 | 310 |
return err |
313 | 311 |
} |
314 | 312 |
|
315 |
- if err := cont.Pause(); err != nil { |
|
316 |
- return fmt.Errorf("Cannot pause container %s: %s", name, err) |
|
317 |
- } |
|
318 |
- cont.LogEvent("pause") |
|
319 |
- |
|
320 | 313 |
w.WriteHeader(http.StatusNoContent) |
321 | 314 |
|
322 | 315 |
return nil |
... | ... |
@@ -330,17 +323,10 @@ func (s *Server) postContainersUnpause(version version.Version, w http.ResponseW |
330 | 330 |
return err |
331 | 331 |
} |
332 | 332 |
|
333 |
- name := vars["name"] |
|
334 |
- cont, err := s.daemon.Get(name) |
|
335 |
- if err != nil { |
|
333 |
+ if err := s.daemon.ContainerUnpause(vars["name"]); err != nil { |
|
336 | 334 |
return err |
337 | 335 |
} |
338 | 336 |
|
339 |
- if err := cont.Unpause(); err != nil { |
|
340 |
- return fmt.Errorf("Cannot unpause container %s: %s", name, err) |
|
341 |
- } |
|
342 |
- cont.LogEvent("unpause") |
|
343 |
- |
|
344 | 337 |
w.WriteHeader(http.StatusNoContent) |
345 | 338 |
|
346 | 339 |
return nil |
... | ... |
@@ -529,13 +515,7 @@ func (s *Server) getContainersChanges(version version.Version, w http.ResponseWr |
529 | 529 |
return fmt.Errorf("Missing parameter") |
530 | 530 |
} |
531 | 531 |
|
532 |
- name := vars["name"] |
|
533 |
- cont, err := s.daemon.Get(name) |
|
534 |
- if err != nil { |
|
535 |
- return err |
|
536 |
- } |
|
537 |
- |
|
538 |
- changes, err := cont.Changes() |
|
532 |
+ changes, err := s.daemon.ContainerChanges(vars["name"]) |
|
539 | 533 |
if err != nil { |
540 | 534 |
return err |
541 | 535 |
} |
... | ... |
@@ -1112,12 +1092,7 @@ func (s *Server) postContainersResize(version version.Version, w http.ResponseWr |
1112 | 1112 |
return err |
1113 | 1113 |
} |
1114 | 1114 |
|
1115 |
- cont, err := s.daemon.Get(vars["name"]) |
|
1116 |
- if err != nil { |
|
1117 |
- return err |
|
1118 |
- } |
|
1119 |
- |
|
1120 |
- return cont.Resize(height, width) |
|
1115 |
+ return s.daemon.ContainerResize(vars["name"], height, width) |
|
1121 | 1116 |
} |
1122 | 1117 |
|
1123 | 1118 |
func (s *Server) postContainersAttach(version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { |
... | ... |
@@ -1371,30 +1346,19 @@ func (s *Server) postContainersCopy(version version.Version, w http.ResponseWrit |
1371 | 1371 |
return fmt.Errorf("Path cannot be empty") |
1372 | 1372 |
} |
1373 | 1373 |
|
1374 |
- res := cfg.Resource |
|
1375 |
- |
|
1376 |
- if res[0] == '/' { |
|
1377 |
- res = res[1:] |
|
1378 |
- } |
|
1379 |
- |
|
1380 |
- cont, err := s.daemon.Get(vars["name"]) |
|
1374 |
+ data, err := s.daemon.ContainerCopy(vars["name"], cfg.Resource) |
|
1381 | 1375 |
if err != nil { |
1382 |
- logrus.Errorf("%v", err) |
|
1383 | 1376 |
if strings.Contains(strings.ToLower(err.Error()), "no such id") { |
1384 | 1377 |
w.WriteHeader(http.StatusNotFound) |
1385 | 1378 |
return nil |
1386 | 1379 |
} |
1387 |
- } |
|
1388 |
- |
|
1389 |
- data, err := cont.Copy(res) |
|
1390 |
- if err != nil { |
|
1391 |
- logrus.Errorf("%v", err) |
|
1392 | 1380 |
if os.IsNotExist(err) { |
1393 | 1381 |
return fmt.Errorf("Could not find the file %s in container %s", cfg.Resource, vars["name"]) |
1394 | 1382 |
} |
1395 | 1383 |
return err |
1396 | 1384 |
} |
1397 | 1385 |
defer data.Close() |
1386 |
+ |
|
1398 | 1387 |
w.Header().Set("Content-Type", "application/x-tar") |
1399 | 1388 |
if _, err := io.Copy(w, data); err != nil { |
1400 | 1389 |
return err |
1401 | 1390 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,13 @@ |
0 |
+package daemon |
|
1 |
+ |
|
2 |
+import "github.com/docker/docker/pkg/archive" |
|
3 |
+ |
|
4 |
+// ContainerChanges returns a list of container fs changes |
|
5 |
+func (daemon *Daemon) ContainerChanges(name string) ([]archive.Change, error) { |
|
6 |
+ container, err := daemon.Get(name) |
|
7 |
+ if err != nil { |
|
8 |
+ return nil, err |
|
9 |
+ } |
|
10 |
+ |
|
11 |
+ return container.Changes() |
|
12 |
+} |
0 | 13 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,16 @@ |
0 |
+package daemon |
|
1 |
+ |
|
2 |
+import "io" |
|
3 |
+ |
|
4 |
+func (daemon *Daemon) ContainerCopy(name string, res string) (io.ReadCloser, error) { |
|
5 |
+ container, err := daemon.Get(name) |
|
6 |
+ if err != nil { |
|
7 |
+ return nil, err |
|
8 |
+ } |
|
9 |
+ |
|
10 |
+ if res[0] == '/' { |
|
11 |
+ res = res[1:] |
|
12 |
+ } |
|
13 |
+ |
|
14 |
+ return container.Copy(res) |
|
15 |
+} |
0 | 16 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,18 @@ |
0 |
+package daemon |
|
1 |
+ |
|
2 |
+import "fmt" |
|
3 |
+ |
|
4 |
+// ContainerPause pauses a container |
|
5 |
+func (daemon *Daemon) ContainerPause(name string) error { |
|
6 |
+ container, err := daemon.Get(name) |
|
7 |
+ if err != nil { |
|
8 |
+ return err |
|
9 |
+ } |
|
10 |
+ |
|
11 |
+ if err := container.Pause(); err != nil { |
|
12 |
+ return fmt.Errorf("Cannot pause container %s: %s", name, err) |
|
13 |
+ } |
|
14 |
+ container.LogEvent("pause") |
|
15 |
+ |
|
16 |
+ return nil |
|
17 |
+} |
... | ... |
@@ -1,12 +1,19 @@ |
1 | 1 |
package daemon |
2 | 2 |
|
3 |
-func (daemon *Daemon) ContainerExecResize(name string, height, width int) error { |
|
4 |
- execConfig, err := daemon.getExecConfig(name) |
|
3 |
+func (daemon *Daemon) ContainerResize(name string, height, width int) error { |
|
4 |
+ container, err := daemon.Get(name) |
|
5 | 5 |
if err != nil { |
6 | 6 |
return err |
7 | 7 |
} |
8 |
- if err := execConfig.Resize(height, width); err != nil { |
|
8 |
+ |
|
9 |
+ return container.Resize(height, width) |
|
10 |
+} |
|
11 |
+ |
|
12 |
+func (daemon *Daemon) ContainerExecResize(name string, height, width int) error { |
|
13 |
+ execConfig, err := daemon.getExecConfig(name) |
|
14 |
+ if err != nil { |
|
9 | 15 |
return err |
10 | 16 |
} |
11 |
- return nil |
|
17 |
+ |
|
18 |
+ return execConfig.Resize(height, width) |
|
12 | 19 |
} |
13 | 20 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,18 @@ |
0 |
+package daemon |
|
1 |
+ |
|
2 |
+import "fmt" |
|
3 |
+ |
|
4 |
+// ContainerUnpause unpauses a container |
|
5 |
+func (daemon *Daemon) ContainerUnpause(name string) error { |
|
6 |
+ container, err := daemon.Get(name) |
|
7 |
+ if err != nil { |
|
8 |
+ return err |
|
9 |
+ } |
|
10 |
+ |
|
11 |
+ if err := container.Unpause(); err != nil { |
|
12 |
+ return fmt.Errorf("Cannot unpause container %s: %s", name, err) |
|
13 |
+ } |
|
14 |
+ container.LogEvent("unpause") |
|
15 |
+ |
|
16 |
+ return nil |
|
17 |
+} |