Add documentation for guarding the Nomad tasks
This commit is contained in:
@ -68,7 +68,7 @@ func (n *NomadEnvironment) SetID(id dto.EnvironmentID) {
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) PrewarmingPoolSize() uint {
|
||||
configTaskGroup := nomad.FindOrCreateConfigTaskGroup(n.job)
|
||||
configTaskGroup := nomad.FindAndValidateConfigTaskGroup(n.job)
|
||||
count, err := strconv.Atoi(configTaskGroup.Meta[nomad.ConfigMetaPoolSizeKey])
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Prewarming pool size can not be parsed from Job")
|
||||
@ -77,7 +77,7 @@ func (n *NomadEnvironment) PrewarmingPoolSize() uint {
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) SetPrewarmingPoolSize(count uint) {
|
||||
taskGroup := nomad.FindOrCreateConfigTaskGroup(n.job)
|
||||
taskGroup := nomad.FindAndValidateConfigTaskGroup(n.job)
|
||||
|
||||
if taskGroup.Meta == nil {
|
||||
taskGroup.Meta = make(map[string]string)
|
||||
@ -86,36 +86,36 @@ func (n *NomadEnvironment) SetPrewarmingPoolSize(count uint) {
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) CPULimit() uint {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
return uint(*defaultTask.Resources.CPU)
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) SetCPULimit(limit uint) {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
|
||||
integerCPULimit := int(limit)
|
||||
defaultTask.Resources.CPU = &integerCPULimit
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) MemoryLimit() uint {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
return uint(*defaultTask.Resources.MemoryMB)
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) SetMemoryLimit(limit uint) {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
|
||||
integerMemoryLimit := int(limit)
|
||||
defaultTask.Resources.MemoryMB = &integerMemoryLimit
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) Image() string {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
image, ok := defaultTask.Config["image"].(string)
|
||||
if !ok {
|
||||
image = ""
|
||||
@ -124,14 +124,14 @@ func (n *NomadEnvironment) Image() string {
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) SetImage(image string) {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
defaultTask.Config["image"] = image
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) NetworkAccess() (allowed bool, ports []uint16) {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
|
||||
allowed = defaultTask.Config["network_mode"] != "none"
|
||||
if len(defaultTaskGroup.Networks) > 0 {
|
||||
@ -144,8 +144,8 @@ func (n *NomadEnvironment) NetworkAccess() (allowed bool, ports []uint16) {
|
||||
}
|
||||
|
||||
func (n *NomadEnvironment) SetNetworkAccess(allow bool, exposedPorts []uint16) {
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(n.job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
|
||||
if len(defaultTaskGroup.Tasks) == 0 {
|
||||
// This function is only used internally and must be called as last step when configuring the task.
|
||||
@ -284,6 +284,9 @@ func (n *NomadEnvironment) DeepCopyJob() *nomadApi.Job {
|
||||
return copyEnvironment.job
|
||||
}
|
||||
|
||||
// SetConfigFrom gets the options from the environment job and saves it into another temporary job.
|
||||
// IMPROVE: The getters use a validation function that theoretically could edit the environment job.
|
||||
// But this modification might never been saved to Nomad.
|
||||
func (n *NomadEnvironment) SetConfigFrom(environment runner.ExecutionEnvironment) {
|
||||
n.SetID(environment.ID())
|
||||
n.SetPrewarmingPoolSize(environment.PrewarmingPoolSize())
|
||||
|
@ -16,7 +16,7 @@ import (
|
||||
|
||||
func TestConfigureNetworkCreatesNewNetworkWhenNoNetworkExists(t *testing.T) {
|
||||
_, job := helpers.CreateTemplateJob()
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(job)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(job)
|
||||
environment := &NomadEnvironment{"", job, nil}
|
||||
|
||||
if assert.Equal(t, 0, len(defaultTaskGroup.Networks)) {
|
||||
@ -28,7 +28,7 @@ func TestConfigureNetworkCreatesNewNetworkWhenNoNetworkExists(t *testing.T) {
|
||||
|
||||
func TestConfigureNetworkDoesNotCreateNewNetworkWhenNetworkExists(t *testing.T) {
|
||||
_, job := helpers.CreateTemplateJob()
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(job)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(job)
|
||||
environment := &NomadEnvironment{"", job, nil}
|
||||
|
||||
networkResource := &nomadApi.NetworkResource{Mode: "bridge"}
|
||||
@ -44,8 +44,8 @@ func TestConfigureNetworkDoesNotCreateNewNetworkWhenNetworkExists(t *testing.T)
|
||||
|
||||
func TestConfigureNetworkSetsCorrectValues(t *testing.T) {
|
||||
_, job := helpers.CreateTemplateJob()
|
||||
defaultTaskGroup := nomad.FindOrCreateDefaultTaskGroup(job)
|
||||
defaultTask := nomad.FindOrCreateDefaultTask(defaultTaskGroup)
|
||||
defaultTaskGroup := nomad.FindAndValidateDefaultTaskGroup(job)
|
||||
defaultTask := nomad.FindAndValidateDefaultTask(defaultTaskGroup)
|
||||
|
||||
mode, ok := defaultTask.Config["network_mode"]
|
||||
assert.True(t, ok)
|
||||
@ -56,8 +56,8 @@ func TestConfigureNetworkSetsCorrectValues(t *testing.T) {
|
||||
t.Run("with no network access", func(t *testing.T) {
|
||||
for _, ports := range exposedPortsTests {
|
||||
_, testJob := helpers.CreateTemplateJob()
|
||||
testTaskGroup := nomad.FindOrCreateDefaultTaskGroup(testJob)
|
||||
testTask := nomad.FindOrCreateDefaultTask(testTaskGroup)
|
||||
testTaskGroup := nomad.FindAndValidateDefaultTaskGroup(testJob)
|
||||
testTask := nomad.FindAndValidateDefaultTask(testTaskGroup)
|
||||
testEnvironment := &NomadEnvironment{"", job, nil}
|
||||
|
||||
testEnvironment.SetNetworkAccess(false, ports)
|
||||
@ -71,8 +71,8 @@ func TestConfigureNetworkSetsCorrectValues(t *testing.T) {
|
||||
t.Run("with network access", func(t *testing.T) {
|
||||
for _, ports := range exposedPortsTests {
|
||||
_, testJob := helpers.CreateTemplateJob()
|
||||
testTaskGroup := nomad.FindOrCreateDefaultTaskGroup(testJob)
|
||||
testTask := nomad.FindOrCreateDefaultTask(testTaskGroup)
|
||||
testTaskGroup := nomad.FindAndValidateDefaultTaskGroup(testJob)
|
||||
testTask := nomad.FindAndValidateDefaultTask(testTaskGroup)
|
||||
testEnvironment := &NomadEnvironment{"", testJob, nil}
|
||||
|
||||
testEnvironment.SetNetworkAccess(true, ports)
|
||||
@ -197,8 +197,8 @@ func TestSampleDoesNotSetForcePullFlag(t *testing.T) {
|
||||
job, ok := args.Get(0).(*nomadApi.Job)
|
||||
assert.True(t, ok)
|
||||
|
||||
taskGroup := nomad.FindOrCreateDefaultTaskGroup(job)
|
||||
task := nomad.FindOrCreateDefaultTask(taskGroup)
|
||||
taskGroup := nomad.FindAndValidateDefaultTaskGroup(job)
|
||||
task := nomad.FindAndValidateDefaultTask(taskGroup)
|
||||
assert.False(t, task.Config["force_pull"].(bool))
|
||||
|
||||
call.ReturnArguments = mock.Arguments{nil}
|
||||
|
@ -178,7 +178,7 @@ func (m *NomadEnvironmentManager) Load() error {
|
||||
jobLogger.Info("Job not running, skipping ...")
|
||||
continue
|
||||
}
|
||||
configTaskGroup := nomad.FindOrCreateConfigTaskGroup(job)
|
||||
configTaskGroup := nomad.FindAndValidateConfigTaskGroup(job)
|
||||
if configTaskGroup == nil {
|
||||
jobLogger.Info("Couldn't find config task group in job, skipping ...")
|
||||
continue
|
||||
|
@ -79,8 +79,8 @@ func (s *CreateOrUpdateTestSuite) TestCreateOrUpdatesSetsForcePullFlag() {
|
||||
|
||||
// The environment job itself has not the force_pull flag
|
||||
if count > 1 {
|
||||
taskGroup := nomad.FindOrCreateDefaultTaskGroup(job)
|
||||
task := nomad.FindOrCreateDefaultTask(taskGroup)
|
||||
taskGroup := nomad.FindAndValidateDefaultTaskGroup(job)
|
||||
task := nomad.FindAndValidateDefaultTask(taskGroup)
|
||||
s.True(task.Config["force_pull"].(bool))
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user