This repository has been archived on 2024-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
minifaas/jobs.go

52 lines
942 B
Go

package main
import (
"github.com/docker/docker/api/types/mount"
"github.com/nemunaire/minifaas/engine/docker"
)
type Job struct {
Image string
Cmd []string
DataMount bool
}
var jobs = map[string]Job{
"counter": {
Image: "alpine",
Cmd: []string{"sh", "-c", "touch /data/work_done; for i in `seq 10`; do echo $i; sleep 0.5; done"},
DataMount: true,
},
}
func RunJob(jobtype string) (string, error) {
var mnts []mount.Mount
if jobs[jobtype].DataMount {
myVolume, err := docker.CreateVolumeDir("/data", false)
if err != nil {
return "", err
}
mnts = append(mnts, *myVolume)
}
// Check if the image is here
hasimg, err := docker.HasImage(jobs[jobtype].Image)
if err != nil {
return "", err
}
if !hasimg {
err = docker.PullImage(jobs[jobtype].Image)
if err != nil {
return "", err
}
}
return docker.Create(
jobtype,
jobs[jobtype].Image,
jobs[jobtype].Cmd,
mnts,
)
}