mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
@@ -17,6 +17,7 @@ import (
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
ID string
|
||||
Ctx context.Context
|
||||
Route *models.Route
|
||||
Payload string
|
||||
|
||||
@@ -2,6 +2,7 @@ package runner
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -21,6 +22,7 @@ func TestRunnerHello(t *testing.T) {
|
||||
{&models.Route{Image: "iron/hello"}, `{"name": "test"}`, "success", "Hello test!", ""},
|
||||
} {
|
||||
runner := New(&Config{
|
||||
ID: fmt.Sprintf("task-hello-%d-%d", i, time.Now().Unix()),
|
||||
Ctx: context.Background(),
|
||||
Route: test.route,
|
||||
Timeout: 5 * time.Second,
|
||||
@@ -57,6 +59,7 @@ func TestRunnerError(t *testing.T) {
|
||||
{&models.Route{Image: "iron/error"}, `{"name": "test"}`, "error", "", "RuntimeError"},
|
||||
} {
|
||||
runner := New(&Config{
|
||||
ID: fmt.Sprintf("task-error-%d-%d", i, time.Now().Unix()),
|
||||
Ctx: context.Background(),
|
||||
Route: test.route,
|
||||
Timeout: 5 * time.Second,
|
||||
|
||||
@@ -23,7 +23,7 @@ func (t *containerTask) EnvVars() map[string]string {
|
||||
return env
|
||||
}
|
||||
|
||||
func (t *containerTask) Id() string { return "" }
|
||||
func (t *containerTask) Id() string { return t.cfg.ID }
|
||||
func (t *containerTask) Group() string { return "" }
|
||||
func (t *containerTask) Image() string { return t.cfg.Route.Image }
|
||||
func (t *containerTask) Timeout() uint { return uint(t.cfg.Timeout.Seconds()) }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/iron-io/functions/api/models"
|
||||
"github.com/iron-io/functions/api/runner"
|
||||
"github.com/satori/go.uuid"
|
||||
)
|
||||
|
||||
func handleRunner(c *gin.Context) {
|
||||
@@ -22,6 +24,11 @@ func handleRunner(c *gin.Context) {
|
||||
|
||||
log := c.MustGet("log").(logrus.FieldLogger)
|
||||
|
||||
reqID := uuid.NewV5(uuid.Nil, fmt.Sprintf("%s%s%d", c.Request.RemoteAddr, c.Request.URL.Path, time.Now().Unix())).String()
|
||||
c.Set("reqID", reqID)
|
||||
|
||||
log = log.WithFields(logrus.Fields{"request_id": reqID})
|
||||
|
||||
var err error
|
||||
|
||||
var payload []byte
|
||||
@@ -75,7 +82,6 @@ func handleRunner(c *gin.Context) {
|
||||
}
|
||||
|
||||
log.WithField("routes", routes).Debug("Got routes from datastore")
|
||||
|
||||
for _, el := range routes {
|
||||
if el.Path == route {
|
||||
run := runner.New(&runner.Config{
|
||||
@@ -83,6 +89,7 @@ func handleRunner(c *gin.Context) {
|
||||
Route: el,
|
||||
Payload: string(payload),
|
||||
Timeout: 30 * time.Second,
|
||||
ID: reqID,
|
||||
})
|
||||
|
||||
if err := run.Run(); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user