Skip to content

Commit 86de7c0

Browse files
author
Arnaud Porterie
authored
Merge pull request #26108 from mlaventure/data-mngt
New Data Management commands
2 parents 1833842 + 913e5cb commit 86de7c0

49 files changed

Lines changed: 1962 additions & 13 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/server/router/container/backend.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,17 @@ type attachBackend interface {
6262
ContainerAttach(name string, c *backend.ContainerAttachConfig) error
6363
}
6464

65+
// systemBackend includes functions to implement to provide system wide containers functionality
66+
type systemBackend interface {
67+
ContainersPrune(config *types.ContainersPruneConfig) (*types.ContainersPruneReport, error)
68+
}
69+
6570
// Backend is all the methods that need to be implemented to provide container specific functionality.
6671
type Backend interface {
6772
execBackend
6873
copyBackend
6974
stateBackend
7075
monitorBackend
7176
attachBackend
77+
systemBackend
7278
}

api/server/router/container/container.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ func (r *containerRouter) initRoutes() {
6868
router.NewPostRoute("/exec/{name:.*}/resize", r.postContainerExecResize),
6969
router.NewPostRoute("/containers/{name:.*}/rename", r.postContainerRename),
7070
router.NewPostRoute("/containers/{name:.*}/update", r.postContainerUpdate),
71+
router.NewPostRoute("/containers/prune", r.postContainersPrune),
7172
// PUT
7273
router.NewPutRoute("/containers/{name:.*}/archive", r.putContainersArchive),
7374
// DELETE

api/server/router/container/container_routes.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,3 +524,24 @@ func (s *containerRouter) wsContainersAttach(ctx context.Context, w http.Respons
524524
}
525525
return err
526526
}
527+
528+
func (s *containerRouter) postContainersPrune(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
529+
if err := httputils.ParseForm(r); err != nil {
530+
return err
531+
}
532+
533+
if err := httputils.CheckForJSON(r); err != nil {
534+
return err
535+
}
536+
537+
var cfg types.ContainersPruneConfig
538+
if err := json.NewDecoder(r.Body).Decode(&cfg); err != nil {
539+
return err
540+
}
541+
542+
pruneReport, err := s.backend.ContainersPrune(&cfg)
543+
if err != nil {
544+
return err
545+
}
546+
return httputils.WriteJSON(w, http.StatusOK, pruneReport)
547+
}

api/server/router/image/backend.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ type containerBackend interface {
2525
type imageBackend interface {
2626
ImageDelete(imageRef string, force, prune bool) ([]types.ImageDelete, error)
2727
ImageHistory(imageName string) ([]*types.ImageHistory, error)
28-
Images(filterArgs string, filter string, all bool) ([]*types.Image, error)
28+
Images(filterArgs string, filter string, all bool, withExtraAttrs bool) ([]*types.Image, error)
2929
LookupImage(name string) (*types.ImageInspect, error)
3030
TagImage(imageName, repository, tag string) error
31+
ImagesPrune(config *types.ImagesPruneConfig) (*types.ImagesPruneReport, error)
3132
}
3233

3334
type importExportBackend interface {

api/server/router/image/image.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ func (r *imageRouter) initRoutes() {
4343
router.Cancellable(router.NewPostRoute("/images/create", r.postImagesCreate)),
4444
router.Cancellable(router.NewPostRoute("/images/{name:.*}/push", r.postImagesPush)),
4545
router.NewPostRoute("/images/{name:.*}/tag", r.postImagesTag),
46+
router.NewPostRoute("/images/prune", r.postImagesPrune),
4647
// DELETE
4748
router.NewDeleteRoute("/images/{name:.*}", r.deleteImages),
4849
}

api/server/router/image/image_routes.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ func (s *imageRouter) getImagesJSON(ctx context.Context, w http.ResponseWriter,
248248
}
249249

250250
// FIXME: The filter parameter could just be a match filter
251-
images, err := s.backend.Images(r.Form.Get("filters"), r.Form.Get("filter"), httputils.BoolValue(r, "all"))
251+
images, err := s.backend.Images(r.Form.Get("filters"), r.Form.Get("filter"), httputils.BoolValue(r, "all"), false)
252252
if err != nil {
253253
return err
254254
}
@@ -314,3 +314,24 @@ func (s *imageRouter) getImagesSearch(ctx context.Context, w http.ResponseWriter
314314
}
315315
return httputils.WriteJSON(w, http.StatusOK, query.Results)
316316
}
317+
318+
func (s *imageRouter) postImagesPrune(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
319+
if err := httputils.ParseForm(r); err != nil {
320+
return err
321+
}
322+
323+
if err := httputils.CheckForJSON(r); err != nil {
324+
return err
325+
}
326+
327+
var cfg types.ImagesPruneConfig
328+
if err := json.NewDecoder(r.Body).Decode(&cfg); err != nil {
329+
return err
330+
}
331+
332+
pruneReport, err := s.backend.ImagesPrune(&cfg)
333+
if err != nil {
334+
return err
335+
}
336+
return httputils.WriteJSON(w, http.StatusOK, pruneReport)
337+
}

api/server/router/system/backend.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
type Backend interface {
1515
SystemInfo() (*types.Info, error)
1616
SystemVersion() types.Version
17+
SystemDiskUsage() (*types.DiskUsage, error)
1718
SubscribeToEvents(since, until time.Time, ef filters.Args) ([]events.Message, chan interface{})
1819
UnsubscribeFromEvents(chan interface{})
1920
AuthenticateToRegistry(ctx context.Context, authConfig *types.AuthConfig) (string, string, error)

api/server/router/system/system.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func NewRouter(b Backend, c *cluster.Cluster) router.Router {
2626
router.Cancellable(router.NewGetRoute("/events", r.getEvents)),
2727
router.NewGetRoute("/info", r.getInfo),
2828
router.NewGetRoute("/version", r.getVersion),
29+
router.NewGetRoute("/system/df", r.getDiskUsage),
2930
router.NewPostRoute("/auth", r.postAuth),
3031
}
3132

api/server/router/system/system_routes.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@ func (s *systemRouter) getVersion(ctx context.Context, w http.ResponseWriter, r
5656
return httputils.WriteJSON(w, http.StatusOK, info)
5757
}
5858

59+
func (s *systemRouter) getDiskUsage(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
60+
du, err := s.backend.SystemDiskUsage()
61+
if err != nil {
62+
return err
63+
}
64+
65+
return httputils.WriteJSON(w, http.StatusOK, du)
66+
}
67+
5968
func (s *systemRouter) getEvents(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
6069
if err := httputils.ParseForm(r); err != nil {
6170
return err

api/server/router/volume/backend.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ type Backend interface {
1212
VolumeInspect(name string) (*types.Volume, error)
1313
VolumeCreate(name, driverName string, opts, labels map[string]string) (*types.Volume, error)
1414
VolumeRm(name string, force bool) error
15+
VolumesPrune(config *types.VolumesPruneConfig) (*types.VolumesPruneReport, error)
1516
}

0 commit comments

Comments
 (0)