Browse code

Refactor server to use daemon as the service layer in controllers

Signed-off-by: Antonio Murdaca <me@runcom.ninja>

Antonio Murdaca authored on 2015/05/02 10:03:35
Showing 6 changed files
... ...
@@ -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
+}