in pkg/providers/translation/apisix_upstream.go [320:378]
func (t *translator) translateUpstreamPassiveHealthCheckV2(config *configv2.PassiveHealthCheck) (*apisixv1.UpstreamPassiveHealthCheck, error) {
var passive apisixv1.UpstreamPassiveHealthCheck
switch config.Type {
case apisixv1.HealthCheckHTTP, apisixv1.HealthCheckHTTPS, apisixv1.HealthCheckTCP:
passive.Type = config.Type
case "":
passive.Type = apisixv1.HealthCheckHTTP
default:
return nil, &TranslateError{
Field: "healthCheck.passive.Type",
Reason: "invalid value",
}
}
if config.Healthy != nil {
// zero means use the default value.
if config.Healthy.Successes < 0 || config.Healthy.Successes > apisixv1.HealthCheckMaxConsecutiveNumber {
return nil, &TranslateError{
Field: "healthCheck.passive.healthy.successes",
Reason: "invalid value",
}
}
passive.Healthy.Successes = config.Healthy.Successes
if config.Healthy.HTTPCodes != nil && len(config.Healthy.HTTPCodes) < 1 {
return nil, &TranslateError{
Field: "healthCheck.passive.healthy.httpCodes",
Reason: "empty",
}
}
passive.Healthy.HTTPStatuses = config.Healthy.HTTPCodes
}
if config.Unhealthy != nil {
if config.Unhealthy.HTTPFailures < 0 || config.Unhealthy.HTTPFailures > apisixv1.HealthCheckMaxConsecutiveNumber {
return nil, &TranslateError{
Field: "healthCheck.passive.unhealthy.httpFailures",
Reason: "invalid value",
}
}
passive.Unhealthy.HTTPFailures = config.Unhealthy.HTTPFailures
if config.Unhealthy.TCPFailures < 0 || config.Unhealthy.TCPFailures > apisixv1.HealthCheckMaxConsecutiveNumber {
return nil, &TranslateError{
Field: "healthCheck.passive.unhealthy.tcpFailures",
Reason: "invalid value",
}
}
passive.Unhealthy.TCPFailures = config.Unhealthy.TCPFailures
passive.Unhealthy.Timeouts = config.Unhealthy.Timeouts
if config.Unhealthy.HTTPCodes != nil && len(config.Unhealthy.HTTPCodes) < 1 {
return nil, &TranslateError{
Field: "healthCheck.passive.unhealthy.httpCodes",
Reason: "empty",
}
}
passive.Unhealthy.HTTPStatuses = config.Unhealthy.HTTPCodes
}
return &passive, nil
}