build.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package build // import "github.com/docker/docker/api/server/router/build"
  2. import (
  3. "github.com/docker/docker/api/server/router"
  4. "github.com/docker/docker/api/types"
  5. )
  6. // buildRouter is a router to talk with the build controller
  7. type buildRouter struct {
  8. backend Backend
  9. daemon experimentalProvider
  10. routes []router.Route
  11. features *map[string]bool
  12. }
  13. // NewRouter initializes a new build router
  14. func NewRouter(b Backend, d experimentalProvider, features *map[string]bool) router.Router {
  15. r := &buildRouter{
  16. backend: b,
  17. daemon: d,
  18. features: features,
  19. }
  20. r.initRoutes()
  21. return r
  22. }
  23. // Routes returns the available routers to the build controller
  24. func (r *buildRouter) Routes() []router.Route {
  25. return r.routes
  26. }
  27. func (r *buildRouter) initRoutes() {
  28. r.routes = []router.Route{
  29. router.NewPostRoute("/build", r.postBuild),
  30. router.NewPostRoute("/build/prune", r.postPrune),
  31. router.NewPostRoute("/build/cancel", r.postCancel),
  32. }
  33. }
  34. // BuilderVersion derives the default docker builder version from the config
  35. // Note: it is valid to have BuilderVersion unset which means it is up to the
  36. // client to choose which builder to use.
  37. func BuilderVersion(features map[string]bool) types.BuilderVersion {
  38. var bv types.BuilderVersion
  39. if v, ok := features["buildkit"]; ok {
  40. if v {
  41. bv = types.BuilderBuildKit
  42. } else {
  43. bv = types.BuilderV1
  44. }
  45. }
  46. return bv
  47. }