Merge pull request #17463 from dongluochen/volumeRouter
extract docker volume API from local
This commit is contained in:
commit
4f3dd3db5a
|
@ -116,8 +116,6 @@ func (r *router) initRoutes() {
|
||||||
NewGetRoute("/containers/{name:.*}/attach/ws", r.wsContainersAttach),
|
NewGetRoute("/containers/{name:.*}/attach/ws", r.wsContainersAttach),
|
||||||
NewGetRoute("/exec/{id:.*}/json", r.getExecByID),
|
NewGetRoute("/exec/{id:.*}/json", r.getExecByID),
|
||||||
NewGetRoute("/containers/{name:.*}/archive", r.getContainersArchive),
|
NewGetRoute("/containers/{name:.*}/archive", r.getContainersArchive),
|
||||||
NewGetRoute("/volumes", r.getVolumesList),
|
|
||||||
NewGetRoute("/volumes/{name:.*}", r.getVolumeByName),
|
|
||||||
// POST
|
// POST
|
||||||
NewPostRoute("/auth", r.postAuth),
|
NewPostRoute("/auth", r.postAuth),
|
||||||
NewPostRoute("/commit", r.postCommit),
|
NewPostRoute("/commit", r.postCommit),
|
||||||
|
@ -141,13 +139,11 @@ func (r *router) initRoutes() {
|
||||||
NewPostRoute("/exec/{name:.*}/start", r.postContainerExecStart),
|
NewPostRoute("/exec/{name:.*}/start", r.postContainerExecStart),
|
||||||
NewPostRoute("/exec/{name:.*}/resize", r.postContainerExecResize),
|
NewPostRoute("/exec/{name:.*}/resize", r.postContainerExecResize),
|
||||||
NewPostRoute("/containers/{name:.*}/rename", r.postContainerRename),
|
NewPostRoute("/containers/{name:.*}/rename", r.postContainerRename),
|
||||||
NewPostRoute("/volumes/create", r.postVolumesCreate),
|
|
||||||
// PUT
|
// PUT
|
||||||
NewPutRoute("/containers/{name:.*}/archive", r.putContainersArchive),
|
NewPutRoute("/containers/{name:.*}/archive", r.putContainersArchive),
|
||||||
// DELETE
|
// DELETE
|
||||||
NewDeleteRoute("/containers/{name:.*}", r.deleteContainers),
|
NewDeleteRoute("/containers/{name:.*}", r.deleteContainers),
|
||||||
NewDeleteRoute("/images/{name:.*}", r.deleteImages),
|
NewDeleteRoute("/images/{name:.*}", r.deleteImages),
|
||||||
NewDeleteRoute("/volumes/{name:.*}", r.deleteVolumes),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package volume
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/docker/docker/api/server/router"
|
||||||
|
"github.com/docker/docker/api/server/router/local"
|
||||||
|
"github.com/docker/docker/daemon"
|
||||||
|
)
|
||||||
|
|
||||||
|
// volumesRouter is a router to talk with the volumes controller
|
||||||
|
type volumeRouter struct {
|
||||||
|
daemon *daemon.Daemon
|
||||||
|
routes []router.Route
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewRouter initializes a new volumes router
|
||||||
|
func NewRouter(d *daemon.Daemon) router.Router {
|
||||||
|
r := &volumeRouter{
|
||||||
|
daemon: d,
|
||||||
|
}
|
||||||
|
r.initRoutes()
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
//Routes returns the available routers to the volumes controller
|
||||||
|
func (r *volumeRouter) Routes() []router.Route {
|
||||||
|
return r.routes
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *volumeRouter) initRoutes() {
|
||||||
|
r.routes = []router.Route{
|
||||||
|
// GET
|
||||||
|
local.NewGetRoute("/volumes", r.getVolumesList),
|
||||||
|
local.NewGetRoute("/volumes/{name:.*}", r.getVolumeByName),
|
||||||
|
// POST
|
||||||
|
local.NewPostRoute("/volumes/create", r.postVolumesCreate),
|
||||||
|
// DELETE
|
||||||
|
local.NewDeleteRoute("/volumes/{name:.*}", r.deleteVolumes),
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package local
|
package volume
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
@ -9,31 +9,31 @@ import (
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *router) getVolumesList(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
func (v *volumeRouter) getVolumesList(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||||
if err := httputils.ParseForm(r); err != nil {
|
if err := httputils.ParseForm(r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
volumes, err := s.daemon.Volumes(r.Form.Get("filters"))
|
volumes, err := v.daemon.Volumes(r.Form.Get("filters"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return httputils.WriteJSON(w, http.StatusOK, &types.VolumesListResponse{Volumes: volumes})
|
return httputils.WriteJSON(w, http.StatusOK, &types.VolumesListResponse{Volumes: volumes})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *router) getVolumeByName(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
func (v *volumeRouter) getVolumeByName(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||||
if err := httputils.ParseForm(r); err != nil {
|
if err := httputils.ParseForm(r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
v, err := s.daemon.VolumeInspect(vars["name"])
|
volume, err := v.daemon.VolumeInspect(vars["name"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return httputils.WriteJSON(w, http.StatusOK, v)
|
return httputils.WriteJSON(w, http.StatusOK, volume)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *router) postVolumesCreate(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
func (v *volumeRouter) postVolumesCreate(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||||
if err := httputils.ParseForm(r); err != nil {
|
if err := httputils.ParseForm(r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -47,18 +47,18 @@ func (s *router) postVolumesCreate(ctx context.Context, w http.ResponseWriter, r
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
volume, err := s.daemon.VolumeCreate(req.Name, req.Driver, req.DriverOpts)
|
volume, err := v.daemon.VolumeCreate(req.Name, req.Driver, req.DriverOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return httputils.WriteJSON(w, http.StatusCreated, volume)
|
return httputils.WriteJSON(w, http.StatusCreated, volume)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *router) deleteVolumes(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
func (v *volumeRouter) deleteVolumes(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||||
if err := httputils.ParseForm(r); err != nil {
|
if err := httputils.ParseForm(r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := s.daemon.VolumeRm(vars["name"]); err != nil {
|
if err := v.daemon.VolumeRm(vars["name"]); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusNoContent)
|
w.WriteHeader(http.StatusNoContent)
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/docker/docker/api/server/router"
|
"github.com/docker/docker/api/server/router"
|
||||||
"github.com/docker/docker/api/server/router/local"
|
"github.com/docker/docker/api/server/router/local"
|
||||||
"github.com/docker/docker/api/server/router/network"
|
"github.com/docker/docker/api/server/router/network"
|
||||||
|
"github.com/docker/docker/api/server/router/volume"
|
||||||
"github.com/docker/docker/daemon"
|
"github.com/docker/docker/daemon"
|
||||||
"github.com/docker/docker/pkg/sockets"
|
"github.com/docker/docker/pkg/sockets"
|
||||||
"github.com/docker/docker/utils"
|
"github.com/docker/docker/utils"
|
||||||
|
@ -170,6 +171,7 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc {
|
||||||
func (s *Server) InitRouters(d *daemon.Daemon) {
|
func (s *Server) InitRouters(d *daemon.Daemon) {
|
||||||
s.addRouter(local.NewRouter(d))
|
s.addRouter(local.NewRouter(d))
|
||||||
s.addRouter(network.NewRouter(d))
|
s.addRouter(network.NewRouter(d))
|
||||||
|
s.addRouter(volume.NewRouter(d))
|
||||||
|
|
||||||
for _, srv := range s.servers {
|
for _, srv := range s.servers {
|
||||||
srv.srv.Handler = s.CreateMux()
|
srv.srv.Handler = s.CreateMux()
|
||||||
|
|
Loading…
Reference in New Issue