OutputPath string `json:"output_path"`
Priority int `json:"priority"`
RuntimeConstraints RuntimeConstraints `json:"runtime_constraints"`
+ StartedAt time.Time `json:"started_at"`
State ContainerState `json:"state"`
SchedulingParameters SchedulingParameters `json:"scheduling_parameters"`
}
type SchedulingParameters struct {
Partitions []string `json:"partitions"`
Preemptible bool `json:"preemptible"`
+ MaxRunTime int `json:"max_run_time"`
}
// ContainerList is an arvados#containerList resource.
case Queued:
tracker.close()
case Locked, Running:
+ if c.SchedulingParameters.MaxRunTime > 0 {
+ maxRunTime := time.Duration(c.SchedulingParameters.MaxRunTime) * time.Second
+ if time.Since(c.StartedAt) >= maxRunTime {
+ // Time's up, schedule container for cancellation
+ c.Priority = 0
+ }
+ }
tracker.update(c)
case Cancelled, Complete:
tracker.close()