main: move http serving to weldr

Also make sure that /run/weldr exists.
This commit is contained in:
Lars Karlitski 2019-09-26 14:06:58 +02:00
parent e24bfcf7d0
commit 6576fe45dc
2 changed files with 18 additions and 19 deletions

View file

@ -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 {

View file

@ -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)