Add documentation for guarding the Nomad tasks
This commit is contained in:
@@ -37,7 +37,7 @@ var (
|
||||
)
|
||||
|
||||
func (a *APIClient) RegisterRunnerJob(template *nomadApi.Job) error {
|
||||
taskGroup := FindOrCreateConfigTaskGroup(template)
|
||||
taskGroup := FindAndValidateConfigTaskGroup(template)
|
||||
|
||||
taskGroup.Meta = make(map[string]string)
|
||||
taskGroup.Meta[ConfigMetaUsedKey] = ConfigMetaUnusedValue
|
||||
@@ -61,28 +61,29 @@ func FindTaskGroup(job *nomadApi.Job, name string) *nomadApi.TaskGroup {
|
||||
return nil
|
||||
}
|
||||
|
||||
func FindOrCreateDefaultTaskGroup(job *nomadApi.Job) *nomadApi.TaskGroup {
|
||||
func FindAndValidateDefaultTaskGroup(job *nomadApi.Job) *nomadApi.TaskGroup {
|
||||
taskGroup := FindTaskGroup(job, TaskGroupName)
|
||||
if taskGroup == nil {
|
||||
taskGroup = nomadApi.NewTaskGroup(TaskGroupName, TaskCount)
|
||||
job.AddTaskGroup(taskGroup)
|
||||
}
|
||||
FindOrCreateDefaultTask(taskGroup)
|
||||
FindAndValidateDefaultTask(taskGroup)
|
||||
return taskGroup
|
||||
}
|
||||
|
||||
func FindOrCreateConfigTaskGroup(job *nomadApi.Job) *nomadApi.TaskGroup {
|
||||
func FindAndValidateConfigTaskGroup(job *nomadApi.Job) *nomadApi.TaskGroup {
|
||||
taskGroup := FindTaskGroup(job, ConfigTaskGroupName)
|
||||
if taskGroup == nil {
|
||||
taskGroup = nomadApi.NewTaskGroup(ConfigTaskGroupName, 0)
|
||||
job.AddTaskGroup(taskGroup)
|
||||
}
|
||||
FindOrCreateConfigTask(taskGroup)
|
||||
FindAndValidateConfigTask(taskGroup)
|
||||
return taskGroup
|
||||
}
|
||||
|
||||
// FindOrCreateConfigTask ensures that a dummy task is in the task group so that the group is accepted by Nomad.
|
||||
func FindOrCreateConfigTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
// FindAndValidateConfigTask returns the config task and
|
||||
// ensures that a dummy task is in the task group so that the group is accepted by Nomad. It might modify the task.
|
||||
func FindAndValidateConfigTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
var task *nomadApi.Task
|
||||
for _, t := range taskGroup.Tasks {
|
||||
if t.Name == ConfigTaskName {
|
||||
@@ -107,8 +108,9 @@ func FindOrCreateConfigTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
return task
|
||||
}
|
||||
|
||||
// FindOrCreateDefaultTask ensures that a default task is in the task group in that the executions are made.
|
||||
func FindOrCreateDefaultTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
// FindAndValidateDefaultTask returns the default task and
|
||||
// ensures that a default task is in the task group in that the executions are made. It might modify the task.
|
||||
func FindAndValidateDefaultTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
var task *nomadApi.Task
|
||||
for _, t := range taskGroup.Tasks {
|
||||
if t.Name == TaskName {
|
||||
@@ -142,8 +144,8 @@ func FindOrCreateDefaultTask(taskGroup *nomadApi.TaskGroup) *nomadApi.Task {
|
||||
|
||||
// SetForcePullFlag sets the flag of a job if the image should be pulled again.
|
||||
func SetForcePullFlag(job *nomadApi.Job, value bool) {
|
||||
taskGroup := FindOrCreateDefaultTaskGroup(job)
|
||||
task := FindOrCreateDefaultTask(taskGroup)
|
||||
taskGroup := FindAndValidateDefaultTaskGroup(job)
|
||||
task := FindAndValidateDefaultTask(taskGroup)
|
||||
task.Config["force_pull"] = value
|
||||
}
|
||||
|
||||
|
@@ -24,7 +24,7 @@ func TestFindTaskGroup(t *testing.T) {
|
||||
func TestFindOrCreateDefaultTask(t *testing.T) {
|
||||
t.Run("Adds default task group when not set", func(t *testing.T) {
|
||||
job := &nomadApi.Job{}
|
||||
group := FindOrCreateDefaultTaskGroup(job)
|
||||
group := FindAndValidateDefaultTaskGroup(job)
|
||||
assert.NotNil(t, group)
|
||||
assert.Equal(t, TaskGroupName, *group.Name)
|
||||
assert.Equal(t, 1, len(job.TaskGroups))
|
||||
@@ -38,7 +38,7 @@ func TestFindOrCreateDefaultTask(t *testing.T) {
|
||||
expectedGroup := &nomadApi.TaskGroup{Name: &groupName}
|
||||
job.TaskGroups = []*nomadApi.TaskGroup{expectedGroup}
|
||||
|
||||
group := FindOrCreateDefaultTaskGroup(job)
|
||||
group := FindAndValidateDefaultTaskGroup(job)
|
||||
assert.NotNil(t, group)
|
||||
assert.Equal(t, 1, len(job.TaskGroups))
|
||||
assert.Equal(t, expectedGroup, group)
|
||||
@@ -48,7 +48,7 @@ func TestFindOrCreateDefaultTask(t *testing.T) {
|
||||
func TestFindOrCreateConfigTaskGroup(t *testing.T) {
|
||||
t.Run("Adds config task group when not set", func(t *testing.T) {
|
||||
job := &nomadApi.Job{}
|
||||
group := FindOrCreateConfigTaskGroup(job)
|
||||
group := FindAndValidateConfigTaskGroup(job)
|
||||
assert.NotNil(t, group)
|
||||
assert.Equal(t, group, job.TaskGroups[0])
|
||||
assert.Equal(t, 1, len(job.TaskGroups))
|
||||
@@ -63,7 +63,7 @@ func TestFindOrCreateConfigTaskGroup(t *testing.T) {
|
||||
expectedGroup := &nomadApi.TaskGroup{Name: &groupName}
|
||||
job.TaskGroups = []*nomadApi.TaskGroup{expectedGroup}
|
||||
|
||||
group := FindOrCreateConfigTaskGroup(job)
|
||||
group := FindAndValidateConfigTaskGroup(job)
|
||||
assert.NotNil(t, group)
|
||||
assert.Equal(t, 1, len(job.TaskGroups))
|
||||
assert.Equal(t, expectedGroup, group)
|
||||
@@ -77,7 +77,7 @@ func TestFindOrCreateTask(t *testing.T) {
|
||||
expectedTask := &nomadApi.Task{Name: TaskName}
|
||||
group.Tasks = []*nomadApi.Task{expectedTask}
|
||||
|
||||
task := FindOrCreateDefaultTask(group)
|
||||
task := FindAndValidateDefaultTask(group)
|
||||
assert.NotNil(t, task)
|
||||
assert.Equal(t, 1, len(group.Tasks))
|
||||
assert.Equal(t, expectedTask, task)
|
||||
@@ -89,7 +89,7 @@ func TestFindOrCreateTask(t *testing.T) {
|
||||
expectedTask := &nomadApi.Task{Name: ConfigTaskName}
|
||||
group.Tasks = []*nomadApi.Task{expectedTask}
|
||||
|
||||
task := FindOrCreateConfigTask(group)
|
||||
task := FindAndValidateConfigTask(group)
|
||||
assert.NotNil(t, task)
|
||||
assert.Equal(t, 1, len(group.Tasks))
|
||||
assert.Equal(t, expectedTask, task)
|
||||
|
@@ -311,7 +311,7 @@ func (a *APIClient) MarkRunnerAsUsed(runnerID string, duration int) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("couldn't retrieve job info: %w", err)
|
||||
}
|
||||
configTaskGroup := FindOrCreateConfigTaskGroup(job)
|
||||
configTaskGroup := FindAndValidateConfigTaskGroup(job)
|
||||
configTaskGroup.Meta[ConfigMetaUsedKey] = ConfigMetaUsedValue
|
||||
configTaskGroup.Meta[ConfigMetaTimeoutKey] = strconv.Itoa(duration)
|
||||
|
||||
|
Reference in New Issue
Block a user