Skip to content

Commit 7481255

Browse files
committed
--http-probe-fail-on-status-4xx flag to fail http probes for 4xx response status
Signed-off-by: Kyle Quest <kcq.public@gmail.com>
1 parent 14093d8 commit 7481255

File tree

7 files changed

+40
-0
lines changed

7 files changed

+40
-0
lines changed

pkg/app/master/command/build/prompt.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ var CommandFlagSuggestions = &command.FlagSuggestions{
6464
{Text: command.FullFlagName(command.FlagHTTPProbeExitOnFailure), Description: command.FlagHTTPProbeExitOnFailureUsage},
6565
{Text: command.FullFlagName(command.FlagHTTPProbeExitOnFailureCount), Description: command.FlagHTTPProbeExitOnFailureCountUsage},
6666
{Text: command.FullFlagName(command.FlagHTTPProbeFailOnStatus5xx), Description: command.FlagHTTPProbeFailOnStatus5xxUsage},
67+
{Text: command.FullFlagName(command.FlagHTTPProbeFailOnStatus4xx), Description: command.FlagHTTPProbeFailOnStatus4xxUsage},
6768
{Text: command.FullFlagName(command.FlagHTTPProbeConcurrency), Description: command.FlagHTTPProbeConcurrencyUsage},
6869
{Text: command.FullFlagName(command.FlagHTTPProbeCrawl), Description: command.FlagHTTPProbeCrawlUsage},
6970
{Text: command.FullFlagName(command.FlagHTTPCrawlMaxDepth), Description: command.FlagHTTPCrawlMaxDepthUsage},
@@ -197,6 +198,7 @@ var CommandFlagSuggestions = &command.FlagSuggestions{
197198
command.FullFlagName(command.FlagHTTPProbeFull): command.CompleteTBool,
198199
command.FullFlagName(command.FlagHTTPProbeExitOnFailure): command.CompleteTBool,
199200
command.FullFlagName(command.FlagHTTPProbeFailOnStatus5xx): command.CompleteBool,
201+
command.FullFlagName(command.FlagHTTPProbeFailOnStatus4xx): command.CompleteBool,
200202
command.FullFlagName(command.FlagHTTPProbeCrawl): command.CompleteTBool,
201203
command.FullFlagName(command.FlagHTTPProbeAPISpecFile): command.CompleteFile,
202204
command.FullFlagName(command.FlagHostExecFile): command.CompleteFile,

pkg/app/master/command/cliflags.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ const (
135135
FlagHTTPProbeExitOnFailure = "http-probe-exit-on-failure"
136136
FlagHTTPProbeExitOnFailureCount = "http-probe-exit-on-failure-count"
137137
FlagHTTPProbeFailOnStatus5xx = "http-probe-fail-on-status-5xx"
138+
FlagHTTPProbeFailOnStatus4xx = "http-probe-fail-on-status-4xx"
138139
FlagHTTPProbeConcurrency = "http-probe-concurrency"
139140
FlagHTTPProbeCrawl = "http-probe-crawl"
140141
FlagHTTPCrawlMaxDepth = "http-crawl-max-depth"
@@ -255,6 +256,7 @@ const (
255256
FlagHTTPProbeExitOnFailureUsage = "Exit when all HTTP probe commands fail"
256257
FlagHTTPProbeExitOnFailureCountUsage = "Exit when selected number of probe call failures happens"
257258
FlagHTTPProbeFailOnStatus5xxUsage = "Treat 5xx HTTP status codes as errors during HTTP probing"
259+
FlagHTTPProbeFailOnStatus4xxUsage = "Treat 4xx HTTP status codes as errors during HTTP probing"
258260
FlagHTTPProbeConcurrencyUsage = "Max number of concurrent requests executing HTTP probes"
259261
FlagHTTPProbeCrawlUsage = "Enable crawling for the default HTTP probe command"
260262
FlagHTTPCrawlMaxDepthUsage = "Max depth to use for the HTTP probe crawler"
@@ -758,6 +760,11 @@ var CommonFlags = map[string]cli.Flag{
758760
Usage: FlagHTTPProbeFailOnStatus5xxUsage,
759761
EnvVars: []string{"DSLIM_HTTP_PROBE_FAIL_ON_5XX"},
760762
},
763+
FlagHTTPProbeFailOnStatus4xx: &cli.BoolFlag{
764+
Name: FlagHTTPProbeFailOnStatus4xx,
765+
Usage: FlagHTTPProbeFailOnStatus4xxUsage,
766+
EnvVars: []string{"DSLIM_HTTP_PROBE_FAIL_ON_4XX"},
767+
},
761768
FlagHTTPProbeConcurrency: &cli.IntFlag{
762769
Name: FlagHTTPProbeConcurrency,
763770
Value: 5,
@@ -1056,6 +1063,7 @@ func HTTPProbeFlags() []cli.Flag {
10561063
Cflag(FlagHTTPProbeExitOnFailure),
10571064
Cflag(FlagHTTPProbeExitOnFailureCount),
10581065
Cflag(FlagHTTPProbeFailOnStatus5xx),
1066+
Cflag(FlagHTTPProbeFailOnStatus4xx),
10591067
}, HTTPProbeFlagsBasic()...)
10601068
}
10611069

pkg/app/master/command/clifvgetter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ func GetHTTPProbeOptions(xc *app.ExecutionContext, ctx *cli.Context, doProbe boo
8080
opts.ExitOnFailure = ctx.Bool(FlagHTTPProbeExitOnFailure)
8181
opts.ExitOnFailureCount = ctx.Int(FlagHTTPProbeExitOnFailureCount)
8282
opts.FailOnStatus5xx = ctx.Bool(FlagHTTPProbeFailOnStatus5xx)
83+
opts.FailOnStatus4xx = ctx.Bool(FlagHTTPProbeFailOnStatus4xx)
8384
}
8485

8586
cmds, err := GetHTTPProbes(ctx)

pkg/app/master/command/profile/prompt.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var CommandFlagSuggestions = &command.FlagSuggestions{
3838
{Text: command.FullFlagName(command.FlagHTTPProbeExitOnFailure), Description: command.FlagHTTPProbeExitOnFailureUsage},
3939
{Text: command.FullFlagName(command.FlagHTTPProbeExitOnFailureCount), Description: command.FlagHTTPProbeExitOnFailureCountUsage},
4040
{Text: command.FullFlagName(command.FlagHTTPProbeFailOnStatus5xx), Description: command.FlagHTTPProbeFailOnStatus5xxUsage},
41+
{Text: command.FullFlagName(command.FlagHTTPProbeFailOnStatus4xx), Description: command.FlagHTTPProbeFailOnStatus4xxUsage},
4142
{Text: command.FullFlagName(command.FlagHTTPProbeConcurrency), Description: command.FlagHTTPProbeConcurrencyUsage},
4243
{Text: command.FullFlagName(command.FlagHTTPProbeCrawl), Description: command.FlagHTTPProbeCrawlUsage},
4344
{Text: command.FullFlagName(command.FlagHTTPCrawlMaxDepth), Description: command.FlagHTTPCrawlMaxDepthUsage},
@@ -91,6 +92,7 @@ var CommandFlagSuggestions = &command.FlagSuggestions{
9192
command.FullFlagName(command.FlagHTTPProbeFull): command.CompleteTBool,
9293
command.FullFlagName(command.FlagHTTPProbeExitOnFailure): command.CompleteTBool,
9394
command.FullFlagName(command.FlagHTTPProbeFailOnStatus5xx): command.CompleteBool,
95+
command.FullFlagName(command.FlagHTTPProbeFailOnStatus4xx): command.CompleteBool,
9496
command.FullFlagName(command.FlagHTTPProbeCrawl): command.CompleteTBool,
9597
command.FullFlagName(command.FlagHTTPProbeAPISpecFile): command.CompleteFile,
9698
command.FullFlagName(command.FlagHTTPProbeRetryOff): command.CompleteBool,

pkg/app/master/config/http_probe.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ type HTTPProbeOptions struct {
8484
ExitOnFailure bool
8585
ExitOnFailureCount int
8686
FailOnStatus5xx bool
87+
FailOnStatus4xx bool
8788

8889
ClientTimeout int
8990
CrawlClientTimeout int

pkg/app/master/probe/http/custom_probe.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const (
4343

4444
var (
4545
ErrFailOnStatus5xx = errors.New("failed on status code 5xx")
46+
ErrFailOnStatus4xx = errors.New("failed on status code 4xx")
4647
)
4748

4849
type ovars = app.OutVars
@@ -934,6 +935,19 @@ func (p *CustomProbe) call(
934935
})
935936
}
936937
}
938+
if p.opts.FailOnStatus4xx &&
939+
res.StatusCode >= 400 &&
940+
res.StatusCode < 500 {
941+
err = ErrFailOnStatus4xx
942+
if p.printState {
943+
p.xc.Out.Info("http.probe.call.status.error",
944+
ovars{
945+
"status": statusCode,
946+
"method": cmd.Method,
947+
"endpoint": addr,
948+
})
949+
}
950+
}
937951
} else {
938952
callErrorStr = err.Error()
939953
}

pkg/app/master/probe/http/swagger.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,18 @@ func (p *CustomProbe) apiSpecEndpointCall(
652652
"endpoint": endpoint,
653653
})
654654
}
655+
} else if p.opts.FailOnStatus4xx &&
656+
res.StatusCode >= 400 &&
657+
res.StatusCode < 500 {
658+
err = ErrFailOnStatus4xx
659+
if p.printState {
660+
p.xc.Out.Info("http.probe.api-spec.probe.endpoint.call.status.error.4xx",
661+
ovars{
662+
"status": statusCode,
663+
"method": method,
664+
"endpoint": endpoint,
665+
})
666+
}
655667
} else if res.StatusCode == http.StatusInternalServerError {
656668
if p.printState {
657669
p.xc.Out.Info("http.probe.api-spec.probe.endpoint.call.status.500.try.again.with.different.data",

0 commit comments

Comments
 (0)