github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/api/server/router/build/build.go (about)

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