Signed-off-by: Antonio Murdaca <me@runcom.ninja>
| ... | ... |
@@ -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 |
+} |