File: container.go

package info (click to toggle)
docker.io 28.5.2%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 69,048 kB
  • sloc: sh: 5,867; makefile: 863; ansic: 184; python: 162; asm: 159
file content (71 lines) | stat: -rw-r--r-- 3,118 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package container

import (
	"github.com/docker/docker/api/server/httputils"
	"github.com/docker/docker/api/server/router"
)

// containerRouter is a router to talk with the container controller
type containerRouter struct {
	backend Backend
	decoder httputils.ContainerDecoder
	routes  []router.Route
	cgroup2 bool
}

// NewRouter initializes a new container router
func NewRouter(b Backend, decoder httputils.ContainerDecoder, cgroup2 bool) router.Router {
	r := &containerRouter{
		backend: b,
		decoder: decoder,
		cgroup2: cgroup2,
	}
	r.initRoutes()
	return r
}

// Routes returns the available routes to the container controller
func (c *containerRouter) Routes() []router.Route {
	return c.routes
}

// initRoutes initializes the routes in container router
func (c *containerRouter) initRoutes() {
	c.routes = []router.Route{
		// HEAD
		router.NewHeadRoute("/containers/{name:.*}/archive", c.headContainersArchive),
		// GET
		router.NewGetRoute("/containers/json", c.getContainersJSON),
		router.NewGetRoute("/containers/{name:.*}/export", c.getContainersExport),
		router.NewGetRoute("/containers/{name:.*}/changes", c.getContainersChanges),
		router.NewGetRoute("/containers/{name:.*}/json", c.getContainersByName),
		router.NewGetRoute("/containers/{name:.*}/top", c.getContainersTop),
		router.NewGetRoute("/containers/{name:.*}/logs", c.getContainersLogs),
		router.NewGetRoute("/containers/{name:.*}/stats", c.getContainersStats),
		router.NewGetRoute("/containers/{name:.*}/attach/ws", c.wsContainersAttach),
		router.NewGetRoute("/exec/{id:.*}/json", c.getExecByID),
		router.NewGetRoute("/containers/{name:.*}/archive", c.getContainersArchive),
		// POST
		router.NewPostRoute("/containers/create", c.postContainersCreate),
		router.NewPostRoute("/containers/{name:.*}/kill", c.postContainersKill),
		router.NewPostRoute("/containers/{name:.*}/pause", c.postContainersPause),
		router.NewPostRoute("/containers/{name:.*}/unpause", c.postContainersUnpause),
		router.NewPostRoute("/containers/{name:.*}/restart", c.postContainersRestart),
		router.NewPostRoute("/containers/{name:.*}/start", c.postContainersStart),
		router.NewPostRoute("/containers/{name:.*}/stop", c.postContainersStop),
		router.NewPostRoute("/containers/{name:.*}/wait", c.postContainersWait),
		router.NewPostRoute("/containers/{name:.*}/resize", c.postContainersResize),
		router.NewPostRoute("/containers/{name:.*}/attach", c.postContainersAttach),
		router.NewPostRoute("/containers/{name:.*}/exec", c.postContainerExecCreate),
		router.NewPostRoute("/exec/{name:.*}/start", c.postContainerExecStart),
		router.NewPostRoute("/exec/{name:.*}/resize", c.postContainerExecResize),
		router.NewPostRoute("/containers/{name:.*}/rename", c.postContainerRename),
		router.NewPostRoute("/containers/{name:.*}/update", c.postContainerUpdate),
		router.NewPostRoute("/containers/prune", c.postContainersPrune),
		router.NewPostRoute("/commit", c.postCommit),
		// PUT
		router.NewPutRoute("/containers/{name:.*}/archive", c.putContainersArchive),
		// DELETE
		router.NewDeleteRoute("/containers/{name:.*}", c.deleteContainers),
	}
}