Mohammed Nafees 3 лет назад
Родитель
Сommit
4b08cbe9e2
3 измененных файлов с 42 добавлено и 6 удалено
  1. 1 3
      internal/worker/worker.go
  2. 11 0
      workers/jobs/helm_revision_tracker.go
  3. 30 3
      workers/main.go

+ 1 - 3
internal/worker/worker.go

@@ -3,12 +3,10 @@ package worker
 import (
 	"context"
 	"log"
-
-	"github.com/google/uuid"
 )
 
 type Job interface {
-	ID() uuid.UUID
+	ID() string
 	Run() error
 }
 

+ 11 - 0
workers/jobs/helm_revision_tracker.go

@@ -0,0 +1,11 @@
+package jobs
+
+type HelmReleaseTracker struct{}
+
+func (t *HelmReleaseTracker) ID() string {
+	return "helm-release-tracker"
+}
+
+func (t *HelmReleaseTracker) Run() error {
+	return nil
+}

+ 30 - 3
workers/main.go

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