From 6576fe45dc50b3bd54abf90812bd9c30f0b5318f Mon Sep 17 00:00:00 2001 From: Lars Karlitski Date: Thu, 26 Sep 2019 14:06:58 +0200 Subject: [PATCH] main: move http serving to weldr Also make sure that /run/weldr exists. --- cmd/osbuild-composer/main.go | 25 ++++++------------------- internal/weldr/api.go | 12 ++++++++++++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/cmd/osbuild-composer/main.go b/cmd/osbuild-composer/main.go index 26c11fe36..fd0c8d875 100644 --- a/cmd/osbuild-composer/main.go +++ b/cmd/osbuild-composer/main.go @@ -1,14 +1,11 @@ package main import ( - "context" "flag" "io/ioutil" "log" "net" - "net/http" "os" - "os/signal" "path/filepath" "osbuild-composer/internal/queue" @@ -28,6 +25,11 @@ func main() { panic(err) } + err = os.Mkdir("/run/weldr", 0755) + if err != nil && !os.IsExist(err) { + panic(err) + } + listener, err := net.Listen("unix", "/run/weldr/api.socket") if err != nil { panic(err) @@ -71,22 +73,7 @@ func main() { } }() - server := http.Server{Handler: api} - shutdownDone := make(chan struct{}, 1) - go func() { - channel := make(chan os.Signal, 1) - signal.Notify(channel, os.Interrupt) - <-channel - server.Shutdown(context.Background()) - close(shutdownDone) - }() - - err = server.Serve(listener) - if err != nil && err != http.ErrServerClosed { - panic(err) - } - - <-shutdownDone + api.Serve(listener) } func writeFileAtomically(filename string, data []byte, mode os.FileMode) error { diff --git a/internal/weldr/api.go b/internal/weldr/api.go index d9cc4c6c7..b68c41eb9 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -3,6 +3,7 @@ package weldr import ( "encoding/json" "log" + "net" "net/http" "strings" "time" @@ -80,6 +81,17 @@ func New(repo rpmmd.RepoConfig, packages rpmmd.PackageList, logger *log.Logger, return api } +func (api *API) Serve(listener net.Listener) error { + server := http.Server{Handler: api} + + err := server.Serve(listener) + if err != nil && err != http.ErrServerClosed { + return err + } + + return nil +} + func (api *API) ServeHTTP(writer http.ResponseWriter, request *http.Request) { if api.logger != nil { log.Println(request.Method, request.URL.Path)