func NewRunID(engine *string) (string, error) {
	s, err := newUUIDv4()
	return fmt.Sprintf("%s-%s", *engine, s[len(*engine)+1:]), err
}
NewRunID returns a new uuid for a Run
package state
import (
	"bytes"
	"encoding/json"
	"fmt"
	"github.com/Masterminds/sprig"
	uuid "github.com/nu7hatch/gouuid"
	"github.com/pkg/errors"
	"github.com/stitchfix/flotilla-os/utils"
	"github.com/xeipuuv/gojsonschema"
	"regexp"
	"sort"
	"strconv"
	"strings"
	"text/template"
	"time"
)
var EKSEngine = "eks"
var EKSSparkEngine = "eks-spark"
var DefaultEngine = EKSEngine
var DefaultTaskType = "task"
var MinCPU = int64(256)
var MaxCPU = int64(32000)
var MinMem = int64(512)
var MaxMem = int64(250000)
var TTLSecondsAfterFinished = int32(3600)
var SpotActiveDeadlineSeconds = int64(172800)
var OndemandActiveDeadlineSeconds = int64(604800)
var SpotLifecycle = "spot"
var OndemandLifecycle = "ondemand"
var DefaultLifecycle = SpotLifecycle
var NodeLifeCycles = []string{OndemandLifecycle, SpotLifecycle}
var Engines = []string{EKSEngine, EKSSparkEngine}
var StatusRunning = "RUNNING"
var StatusQueued = "QUEUED"
var StatusNeedsRetry = "NEEDS_RETRY"
var StatusPending = "PENDING"
var StatusStopped = "STOPPED"
var MaxLogLines = int64(256)
var EKSBackoffLimit = int32(0)
var WorkerTypes = map[string]bool{
	"retry":  true,
	"submit": true,
	"status": true,
}
func IsValidWorkerType(workerType string) bool {
	return WorkerTypes[workerType]
}
func IsValidStatus(status string) bool {
	return status == StatusRunning ||
		status == StatusQueued ||
		status == StatusNeedsRetry ||
		status == StatusPending ||
		status == StatusStopped
}