Skip to content

Commit

Permalink
multiregion: validation should always return error for OSS
Browse files Browse the repository at this point in the history
  • Loading branch information
tgross committed Aug 18, 2020
1 parent d8ac3f9 commit ce3c323
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 35 deletions.
35 changes: 0 additions & 35 deletions nomad/structs/structs.go
Original file line number Diff line number Diff line change
Expand Up @@ -4591,41 +4591,6 @@ func (m *Multiregion) Copy() *Multiregion {
return copy
}

func (m *Multiregion) Validate(jobType string, jobDatacenters []string) error {
var mErr multierror.Error
seen := map[string]struct{}{}
for _, region := range m.Regions {
if _, ok := seen[region.Name]; ok {
mErr.Errors = append(mErr.Errors,
fmt.Errorf("Multiregion region %q can't be listed twice",
region.Name))
}
seen[region.Name] = struct{}{}
if len(region.Datacenters) == 0 && len(jobDatacenters) == 0 {
mErr.Errors = append(mErr.Errors,
fmt.Errorf("Multiregion region %q must have at least 1 datacenter",
region.Name),
)
}
}
if m.Strategy != nil {
switch jobType {
case JobTypeBatch:
if m.Strategy.OnFailure != "" || m.Strategy.MaxParallel != 0 {
mErr.Errors = append(mErr.Errors,
errors.New("Multiregion batch jobs can't have an update strategy"))
}
case JobTypeSystem:
if m.Strategy.OnFailure != "" {
mErr.Errors = append(mErr.Errors,
errors.New("Multiregion system jobs can't have an on_failure setting"))
}
default: // service
}
}
return mErr.ErrorOrNil()
}

type MultiregionStrategy struct {
MaxParallel int
OnFailure string
Expand Down
13 changes: 13 additions & 0 deletions nomad/structs/structs_oss.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// +build !ent

package structs

import "errors"

func (m *Multiregion) Validate(jobType string, jobDatacenters []string) error {
if m != nil {
return errors.New("Multiregion jobs are unlicensed.")
}

return nil
}

0 comments on commit ce3c323

Please sign in to comment.