2023-04-10 15:36:59 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2018-06-22 00:35:07 +00:00
|
|
|
package interfaces
|
|
|
|
|
2018-07-18 20:45:55 +00:00
|
|
|
import (
|
2018-10-04 23:22:01 +00:00
|
|
|
"github.com/hashicorp/nomad/client/allocrunner/state"
|
2023-04-03 15:03:36 +00:00
|
|
|
"github.com/hashicorp/nomad/client/pluginmanager/csimanager"
|
2018-10-04 22:45:46 +00:00
|
|
|
cstructs "github.com/hashicorp/nomad/client/structs"
|
2018-07-18 20:45:55 +00:00
|
|
|
)
|
2018-06-22 00:35:07 +00:00
|
|
|
|
|
|
|
// AllocRunner is the interface for an allocation runner.
|
|
|
|
type AllocRunner interface {
|
|
|
|
// ID returns the ID of the allocation being run.
|
|
|
|
ID() string
|
|
|
|
|
|
|
|
// Run starts the runner and begins executing all the tasks as part of the
|
|
|
|
// allocation.
|
|
|
|
Run()
|
|
|
|
|
|
|
|
// State returns a copy of the runners state object
|
|
|
|
State() *state.State
|
2018-07-18 20:45:55 +00:00
|
|
|
|
|
|
|
TaskStateHandler
|
2018-06-22 00:35:07 +00:00
|
|
|
}
|
|
|
|
|
2018-07-18 20:45:55 +00:00
|
|
|
// TaskStateHandler exposes a handler to be called when a task's state changes
|
|
|
|
type TaskStateHandler interface {
|
2018-10-16 03:38:12 +00:00
|
|
|
// TaskStateUpdated is used to notify the alloc runner about task state
|
|
|
|
// changes.
|
|
|
|
TaskStateUpdated()
|
2018-06-22 00:35:07 +00:00
|
|
|
}
|
2018-10-04 22:45:46 +00:00
|
|
|
|
2020-10-12 17:43:04 +00:00
|
|
|
// AllocStatsReporter gives access to the latest resource usage from the
|
2018-10-04 22:45:46 +00:00
|
|
|
// allocation
|
|
|
|
type AllocStatsReporter interface {
|
|
|
|
LatestAllocStats(taskFilter string) (*cstructs.AllocResourceUsage, error)
|
|
|
|
}
|
2023-04-03 15:03:36 +00:00
|
|
|
|
|
|
|
// HookResourceSetter is used to communicate between alloc hooks and task hooks
|
|
|
|
type HookResourceSetter interface {
|
|
|
|
SetCSIMounts(map[string]*csimanager.MountInfo)
|
|
|
|
GetCSIMounts(map[string]*csimanager.MountInfo)
|
|
|
|
}
|