Skip to content

Commit

Permalink
Merge pull request #10764 from hashicorp/b-passfail-lost
Browse files Browse the repository at this point in the history
consul: make failures_before_critical and success_before_passing work with group services
  • Loading branch information
shoenig authored and Mahmood Ali committed Jun 22, 2021
1 parent f847897 commit b59a226
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 75 deletions.
94 changes: 21 additions & 73 deletions command/agent/job_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -1041,60 +1041,7 @@ func ApiTaskToStructsTask(job *structs.Job, group *structs.TaskGroup,
}
}

if l := len(apiTask.Services); l != 0 {
structsTask.Services = make([]*structs.Service, l)
for i, service := range apiTask.Services {
structsTask.Services[i] = &structs.Service{
Name: service.Name,
PortLabel: service.PortLabel,
Tags: service.Tags,
CanaryTags: service.CanaryTags,
EnableTagOverride: service.EnableTagOverride,
AddressMode: service.AddressMode,
Meta: helper.CopyMapStringString(service.Meta),
CanaryMeta: helper.CopyMapStringString(service.CanaryMeta),
}

if l := len(service.Checks); l != 0 {
structsTask.Services[i].Checks = make([]*structs.ServiceCheck, l)
for j, check := range service.Checks {
structsTask.Services[i].Checks[j] = &structs.ServiceCheck{
Name: check.Name,
Type: check.Type,
Command: check.Command,
Args: check.Args,
Path: check.Path,
Protocol: check.Protocol,
PortLabel: check.PortLabel,
AddressMode: check.AddressMode,
Interval: check.Interval,
Timeout: check.Timeout,
InitialStatus: check.InitialStatus,
TLSSkipVerify: check.TLSSkipVerify,
Header: check.Header,
Method: check.Method,
GRPCService: check.GRPCService,
GRPCUseTLS: check.GRPCUseTLS,
SuccessBeforePassing: check.SuccessBeforePassing,
FailuresBeforeCritical: check.FailuresBeforeCritical,
}
if check.CheckRestart != nil {
structsTask.Services[i].Checks[j].CheckRestart = &structs.CheckRestart{
Limit: check.CheckRestart.Limit,
Grace: *check.CheckRestart.Grace,
IgnoreWarnings: check.CheckRestart.IgnoreWarnings,
}
}
}
}

// Task services can't have a connect block. We still convert it so that
// we can later return a validation error.
if service.Connect != nil {
structsTask.Services[i].Connect = ApiConsulConnectToStructs(service.Connect)
}
}
}
structsTask.Services = ApiServicesToStructs(apiTask.Services)

structsTask.Resources = ApiResourcesToStructs(apiTask.Resources)

Expand Down Expand Up @@ -1254,7 +1201,6 @@ func ApiPortToStructs(in api.Port) structs.Port {
}
}

//TODO(schmichael) refactor and reuse in service parsing above
func ApiServicesToStructs(in []*api.Service) []*structs.Service {
if len(in) == 0 {
return nil
Expand All @@ -1278,24 +1224,26 @@ func ApiServicesToStructs(in []*api.Service) []*structs.Service {
out[i].Checks = make([]*structs.ServiceCheck, l)
for j, check := range s.Checks {
out[i].Checks[j] = &structs.ServiceCheck{
Name: check.Name,
Type: check.Type,
Command: check.Command,
Args: check.Args,
Path: check.Path,
Protocol: check.Protocol,
PortLabel: check.PortLabel,
Expose: check.Expose,
AddressMode: check.AddressMode,
Interval: check.Interval,
Timeout: check.Timeout,
InitialStatus: check.InitialStatus,
TLSSkipVerify: check.TLSSkipVerify,
Header: check.Header,
Method: check.Method,
GRPCService: check.GRPCService,
GRPCUseTLS: check.GRPCUseTLS,
TaskName: check.TaskName,
Name: check.Name,
Type: check.Type,
Command: check.Command,
Args: check.Args,
Path: check.Path,
Protocol: check.Protocol,
PortLabel: check.PortLabel,
Expose: check.Expose,
AddressMode: check.AddressMode,
Interval: check.Interval,
Timeout: check.Timeout,
InitialStatus: check.InitialStatus,
TLSSkipVerify: check.TLSSkipVerify,
Header: check.Header,
Method: check.Method,
GRPCService: check.GRPCService,
GRPCUseTLS: check.GRPCUseTLS,
TaskName: check.TaskName,
SuccessBeforePassing: check.SuccessBeforePassing,
FailuresBeforeCritical: check.FailuresBeforeCritical,
}
if check.CheckRestart != nil {
out[i].Checks[j].CheckRestart = &structs.CheckRestart{
Expand Down
8 changes: 6 additions & 2 deletions command/agent/job_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2024,7 +2024,9 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
Limit: 3,
IgnoreWarnings: true,
},
TaskName: "task1",
TaskName: "task1",
SuccessBeforePassing: 2,
FailuresBeforeCritical: 3,
},
},
Connect: &api.ConsulConnect{
Expand Down Expand Up @@ -2396,7 +2398,9 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
Limit: 3,
IgnoreWarnings: true,
},
TaskName: "task1",
TaskName: "task1",
SuccessBeforePassing: 2,
FailuresBeforeCritical: 3,
},
},
Connect: &structs.ConsulConnect{
Expand Down

0 comments on commit b59a226

Please sign in to comment.