mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
update titan, other deps and minor changes
This commit is contained in:
@@ -7,7 +7,6 @@ import (
|
||||
|
||||
"golang.org/x/net/context"
|
||||
|
||||
"github.com/iron-io/functions/api/models"
|
||||
"github.com/iron-io/titan/common"
|
||||
"github.com/iron-io/titan/runner/agent"
|
||||
"github.com/iron-io/titan/runner/drivers"
|
||||
@@ -17,15 +16,13 @@ import (
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
ID string
|
||||
Ctx context.Context
|
||||
Route *models.Route
|
||||
Payload string
|
||||
Timeout time.Duration
|
||||
RequestURL string
|
||||
AppName string
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
ID string
|
||||
Image string
|
||||
Timeout time.Duration
|
||||
AppName string
|
||||
Env map[string]string
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
}
|
||||
|
||||
type Runner struct {
|
||||
@@ -56,6 +53,12 @@ func (r *Runner) Run(ctx context.Context, cfg *Config) (drivers.RunResult, error
|
||||
auth: &agent.ConfigAuth{},
|
||||
}
|
||||
|
||||
closer, err := r.driver.Prepare(ctx, ctask)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer closer.Close()
|
||||
|
||||
result, err := r.driver.Run(ctx, ctask)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -64,20 +67,19 @@ func (r *Runner) Run(ctx context.Context, cfg *Config) (drivers.RunResult, error
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (r Runner) EnsureUsableImage(cfg *Config) error {
|
||||
func (r Runner) EnsureUsableImage(ctx context.Context, cfg *Config) error {
|
||||
ctask := &containerTask{
|
||||
cfg: cfg,
|
||||
auth: &agent.ConfigAuth{},
|
||||
}
|
||||
|
||||
err := r.driver.EnsureUsableImage(cfg.Ctx, ctask)
|
||||
err := r.driver.EnsureUsableImage(ctx, ctask)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
func selectDriver(driver string, env *common.Environment, conf *driverscommon.Config) (drivers.Driver, error) {
|
||||
switch driver {
|
||||
case "docker":
|
||||
|
||||
@@ -30,12 +30,14 @@ func TestRunnerHello(t *testing.T) {
|
||||
} {
|
||||
var stdout, stderr bytes.Buffer
|
||||
cfg := &Config{
|
||||
ID: fmt.Sprintf("task-hello-%d-%d", i, time.Now().Unix()),
|
||||
Route: test.route,
|
||||
ID: fmt.Sprintf("hello-%d-%d", i, time.Now().Unix()),
|
||||
Image: test.route.Image,
|
||||
Timeout: 5 * time.Second,
|
||||
Payload: test.payload,
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
Env: map[string]string{
|
||||
"PAYLOAD": test.payload,
|
||||
},
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
}
|
||||
|
||||
result, err := runner.Run(ctx, cfg)
|
||||
@@ -77,12 +79,14 @@ func TestRunnerError(t *testing.T) {
|
||||
} {
|
||||
var stdout, stderr bytes.Buffer
|
||||
cfg := &Config{
|
||||
ID: fmt.Sprintf("task-err-%d-%d", i, time.Now().Unix()),
|
||||
Route: test.route,
|
||||
ID: fmt.Sprintf("err-%d-%d", i, time.Now().Unix()),
|
||||
Image: test.route.Image,
|
||||
Timeout: 5 * time.Second,
|
||||
Payload: test.payload,
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
Env: map[string]string{
|
||||
"PAYLOAD": test.payload,
|
||||
},
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
}
|
||||
|
||||
result, err := runner.Run(ctx, cfg)
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"io"
|
||||
|
||||
dockercli "github.com/fsouza/go-dockerclient"
|
||||
"github.com/iron-io/titan/runner/tasker"
|
||||
"github.com/iron-io/titan/runner/drivers"
|
||||
"github.com/iron-io/titan/runner/tasker"
|
||||
)
|
||||
|
||||
type containerTask struct {
|
||||
@@ -16,11 +16,7 @@ type containerTask struct {
|
||||
func (t *containerTask) Command() string { return "" }
|
||||
|
||||
func (t *containerTask) EnvVars() map[string]string {
|
||||
env := map[string]string{
|
||||
"PAYLOAD": t.cfg.Payload,
|
||||
"REQUEST_URL": t.cfg.RequestURL,
|
||||
}
|
||||
return env
|
||||
return t.cfg.Env
|
||||
}
|
||||
|
||||
func (t *containerTask) Labels() map[string]string {
|
||||
@@ -31,14 +27,14 @@ func (t *containerTask) Labels() map[string]string {
|
||||
|
||||
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) Image() string { return t.cfg.Image }
|
||||
func (t *containerTask) Timeout() uint { return uint(t.cfg.Timeout.Seconds()) }
|
||||
func (t *containerTask) Logger() (stdout, stderr io.Writer) { return t.cfg.Stdout, t.cfg.Stderr }
|
||||
func (t *containerTask) Volumes() [][2]string { return [][2]string{} }
|
||||
func (t *containerTask) WorkDir() string { return "" }
|
||||
|
||||
func (t *containerTask) Close() {}
|
||||
func (t *containerTask) WriteStat(drivers.Stat) {}
|
||||
func (t *containerTask) Close() {}
|
||||
func (t *containerTask) WriteStat(drivers.Stat) {}
|
||||
|
||||
func (t *containerTask) DockerAuth() []dockercli.AuthConfiguration {
|
||||
return t.auth.Auth(t.Image())
|
||||
|
||||
@@ -38,11 +38,9 @@ func handleRouteCreate(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
err = Api.Runner.EnsureUsableImage(&runner.Config{
|
||||
Ctx: ctx,
|
||||
Route: wroute.Route,
|
||||
})
|
||||
|
||||
err = Api.Runner.EnsureUsableImage(ctx, &runner.Config{
|
||||
Image: wroute.Route.Image,
|
||||
})
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, simpleError(models.ErrUsableImage))
|
||||
return
|
||||
|
||||
@@ -111,14 +111,16 @@ func handleRunner(c *gin.Context) {
|
||||
if el.Path == route {
|
||||
var stdout, stderr bytes.Buffer
|
||||
cfg := &runner.Config{
|
||||
Route: el,
|
||||
Payload: string(payload),
|
||||
Timeout: 30 * time.Second,
|
||||
ID: reqID,
|
||||
RequestURL: c.Request.URL.String(),
|
||||
AppName: appName,
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
Image: el.Image,
|
||||
Timeout: 30 * time.Second,
|
||||
ID: reqID,
|
||||
AppName: appName,
|
||||
Stdout: &stdout,
|
||||
Stderr: &stderr,
|
||||
Env: map[string]string{
|
||||
"PAYLOAD": string(payload),
|
||||
"REQUEST_URL": c.Request.URL.String(),
|
||||
},
|
||||
}
|
||||
|
||||
if result, err := Api.Runner.Run(c, cfg); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user