main: move http serving to weldr
Also make sure that /run/weldr exists.
This commit is contained in:
parent
e24bfcf7d0
commit
6576fe45dc
2 changed files with 18 additions and 19 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue