update titan, other deps and minor changes

This commit is contained in:
Pedro Nasser
2016-08-24 16:11:21 -03:00
parent 08267e6475
commit 6a2e9b29be
6 changed files with 98 additions and 72 deletions

View File

@@ -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":

View File

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

View File

@@ -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())

View File

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

View File

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