|
|
@@ -3,10 +3,14 @@ package main
|
|
|
import (
|
|
|
"context"
|
|
|
"log"
|
|
|
+ "net/http"
|
|
|
"os"
|
|
|
"strconv"
|
|
|
|
|
|
+ "github.com/go-chi/chi"
|
|
|
+ "github.com/go-chi/chi/middleware"
|
|
|
"github.com/porter-dev/porter/internal/worker"
|
|
|
+ "github.com/porter-dev/porter/workers/jobs"
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
@@ -33,8 +37,31 @@ func main() {
|
|
|
d := worker.NewDispatcher(workerCount)
|
|
|
d.Run(ctx, jobQueue)
|
|
|
|
|
|
- exitChannel := make(chan bool)
|
|
|
+ r := chi.NewRouter()
|
|
|
+ r.Use(middleware.Logger)
|
|
|
+ r.Use(middleware.Recoverer)
|
|
|
+ r.Use(middleware.Heartbeat("/ping"))
|
|
|
+ r.Use(middleware.AllowContentType("application/json"))
|
|
|
|
|
|
- log.Default().Println("use Ctrl+C to exit")
|
|
|
- <-exitChannel
|
|
|
+ r.Post("/enqueue/{id}", func(w http.ResponseWriter, r *http.Request) {
|
|
|
+ job := getJob(chi.URLParam(r, "id"))
|
|
|
+
|
|
|
+ if job == nil {
|
|
|
+ w.WriteHeader(http.StatusNotFound)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ jobQueue <- job
|
|
|
+ w.WriteHeader(http.StatusCreated)
|
|
|
+ })
|
|
|
+
|
|
|
+ http.ListenAndServe(":3000", r)
|
|
|
+}
|
|
|
+
|
|
|
+func getJob(id string) worker.Job {
|
|
|
+ if id == "helm-release-tracker" {
|
|
|
+ return &jobs.HelmReleaseTracker{}
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
}
|