worker: rename API to Server

This makes it symmetric with the client:

    s := worker.NewServer()
    c := worker.NewClient()
This commit is contained in:
Lars Karlitski 2020-04-15 23:29:07 +02:00 committed by Tom Gundersen
parent ac40b0e73b
commit 4a710429de
3 changed files with 34 additions and 34 deletions

View file

@ -117,11 +117,11 @@ func main() {
store := store.New(&stateDir)
jobAPI := worker.New(logger, store)
workerAPI := worker.NewServer(logger, store)
weldrAPI := weldr.New(rpm, arch, distribution, repoMap[common.CurrentArch()], logger, store)
go func() {
err := jobAPI.Serve(jobListener)
err := workerAPI.Serve(jobListener)
common.PanicOnError(err)
}()
@ -157,7 +157,7 @@ func main() {
listener := tls.NewListener(listener, tlsConfig)
go func() {
err := jobAPI.Serve(listener)
err := workerAPI.Serve(listener)
common.PanicOnError(err)
}()
}

View file

@ -14,33 +14,33 @@ import (
"github.com/osbuild/osbuild-composer/internal/store"
)
type API struct {
type Server struct {
logger *log.Logger
store *store.Store
router *httprouter.Router
}
func New(logger *log.Logger, store *store.Store) *API {
api := &API{
func NewServer(logger *log.Logger, store *store.Store) *Server {
s := &Server{
logger: logger,
store: store,
}
api.router = httprouter.New()
api.router.RedirectTrailingSlash = false
api.router.RedirectFixedPath = false
api.router.MethodNotAllowed = http.HandlerFunc(methodNotAllowedHandler)
api.router.NotFound = http.HandlerFunc(notFoundHandler)
s.router = httprouter.New()
s.router.RedirectTrailingSlash = false
s.router.RedirectFixedPath = false
s.router.MethodNotAllowed = http.HandlerFunc(methodNotAllowedHandler)
s.router.NotFound = http.HandlerFunc(notFoundHandler)
api.router.POST("/job-queue/v1/jobs", api.addJobHandler)
api.router.PATCH("/job-queue/v1/jobs/:job_id/builds/:build_id", api.updateJobHandler)
api.router.POST("/job-queue/v1/jobs/:job_id/builds/:build_id/image", api.addJobImageHandler)
s.router.POST("/job-queue/v1/jobs", s.addJobHandler)
s.router.PATCH("/job-queue/v1/jobs/:job_id/builds/:build_id", s.updateJobHandler)
s.router.POST("/job-queue/v1/jobs/:job_id/builds/:build_id/image", s.addJobImageHandler)
return api
return s
}
func (api *API) Serve(listener net.Listener) error {
server := http.Server{Handler: api}
func (s *Server) Serve(listener net.Listener) error {
server := http.Server{Handler: s}
err := server.Serve(listener)
if err != nil && err != http.ErrServerClosed {
@ -50,13 +50,13 @@ func (api *API) Serve(listener net.Listener) error {
return nil
}
func (api *API) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
if api.logger != nil {
func (s *Server) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
if s.logger != nil {
log.Println(request.Method, request.URL.Path)
}
writer.Header().Set("Content-Type", "application/json; charset=utf-8")
api.router.ServeHTTP(writer, request)
s.router.ServeHTTP(writer, request)
}
// jsonErrorf() is similar to http.Error(), but returns the message in a json
@ -78,7 +78,7 @@ func notFoundHandler(writer http.ResponseWriter, request *http.Request) {
jsonErrorf(writer, http.StatusNotFound, "not found")
}
func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) {
func (s *Server) addJobHandler(writer http.ResponseWriter, request *http.Request, _ httprouter.Params) {
contentType := request.Header["Content-Type"]
if len(contentType) != 1 || contentType[0] != "application/json" {
jsonErrorf(writer, http.StatusUnsupportedMediaType, "request must contain application/json data")
@ -92,7 +92,7 @@ func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request,
return
}
nextJob := api.store.PopJob()
nextJob := s.store.PopJob()
writer.WriteHeader(http.StatusCreated)
// FIXME: handle or comment this possible error
@ -104,7 +104,7 @@ func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request,
})
}
func (api *API) updateJobHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
func (s *Server) updateJobHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
contentType := request.Header["Content-Type"]
if len(contentType) != 1 || contentType[0] != "application/json" {
jsonErrorf(writer, http.StatusUnsupportedMediaType, "request must contain application/json data")
@ -131,7 +131,7 @@ func (api *API) updateJobHandler(writer http.ResponseWriter, request *http.Reque
return
}
err = api.store.UpdateImageBuildInCompose(id, imageBuildId, body.Status, body.Result)
err = s.store.UpdateImageBuildInCompose(id, imageBuildId, body.Status, body.Result)
if err != nil {
switch err.(type) {
case *store.NotFoundError, *store.NotPendingError:
@ -147,7 +147,7 @@ func (api *API) updateJobHandler(writer http.ResponseWriter, request *http.Reque
_ = json.NewEncoder(writer).Encode(updateJobResponse{})
}
func (api *API) addJobImageHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
func (s *Server) addJobImageHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
id, err := uuid.Parse(params.ByName("job_id"))
if err != nil {
jsonErrorf(writer, http.StatusBadRequest, "cannot parse compose id: %v", err)
@ -161,7 +161,7 @@ func (api *API) addJobImageHandler(writer http.ResponseWriter, request *http.Req
return
}
err = api.store.AddImageToImageUpload(id, imageBuildId, request.Body)
err = s.store.AddImageToImageUpload(id, imageBuildId, request.Body)
if err != nil {
switch err.(type) {

View file

@ -35,8 +35,8 @@ func TestErrors(t *testing.T) {
}
for _, c := range cases {
api := worker.New(nil, store.New(nil))
test.TestRoute(t, api, false, c.Method, c.Path, c.Body, c.ExpectedStatus, "{}", "message")
server := worker.NewServer(nil, store.New(nil))
test.TestRoute(t, server, false, c.Method, c.Path, c.Body, c.ExpectedStatus, "{}", "message")
}
}
@ -51,14 +51,14 @@ func TestCreate(t *testing.T) {
t.Fatalf("error getting image type from arch")
}
store := store.New(nil)
api := worker.New(nil, store)
server := worker.NewServer(nil, store)
id, err := store.PushCompose(imageType, &blueprint.Blueprint{}, nil, nil, nil, 0, nil)
if err != nil {
t.Fatalf("error pushing compose: %v", err)
}
test.TestRoute(t, api, false, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated,
test.TestRoute(t, server, false, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated,
`{"compose_id":"`+id.String()+`","image_build_id":0,"manifest":{"sources":{},"pipeline":{}},"targets":[]}`, "created")
}
@ -73,7 +73,7 @@ func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) {
t.Fatalf("error getting image type from arch")
}
store := store.New(nil)
api := worker.New(nil, store)
server := worker.NewServer(nil, store)
id := uuid.Nil
if from != "VOID" {
@ -83,14 +83,14 @@ func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) {
}
if from != "WAITING" {
test.SendHTTP(api, false, "POST", "/job-queue/v1/jobs", `{}`)
test.SendHTTP(server, false, "POST", "/job-queue/v1/jobs", `{}`)
if from != "RUNNING" {
test.SendHTTP(api, false, "PATCH", "/job-queue/v1/jobs/"+id.String()+"/builds/0", `{"status":"`+from+`"}`)
test.SendHTTP(server, false, "PATCH", "/job-queue/v1/jobs/"+id.String()+"/builds/0", `{"status":"`+from+`"}`)
}
}
}
test.TestRoute(t, api, false, "PATCH", "/job-queue/v1/jobs/"+id.String()+"/builds/0", `{"status":"`+to+`"}`, expectedStatus, "{}", "message")
test.TestRoute(t, server, false, "PATCH", "/job-queue/v1/jobs/"+id.String()+"/builds/0", `{"status":"`+to+`"}`, expectedStatus, "{}", "message")
}
func TestUpdate(t *testing.T) {