in internal/manifests/collector/adapters/config_to_probe.go [40:88]
func ConfigToContainerProbe(config map[interface{}]interface{}) (*corev1.Probe, error) {
serviceProperty, withService := config["service"]
if !withService {
return nil, errNoService
}
service, withSvcProperty := serviceProperty.(map[interface{}]interface{})
if !withSvcProperty {
return nil, errServiceNotAMap
}
serviceExtensionsProperty, withExtension := service["extensions"]
if !withExtension {
return nil, ErrNoServiceExtensions
}
serviceExtensions, withExtProperty := serviceExtensionsProperty.([]interface{})
if !withExtProperty {
return nil, errServiceExtensionsNotSlice
}
healthCheckServiceExtensions := make([]string, 0)
for _, ext := range serviceExtensions {
parsedExt, ok := ext.(string)
if ok && strings.HasPrefix(parsedExt, "health_check") {
healthCheckServiceExtensions = append(healthCheckServiceExtensions, parsedExt)
}
}
if len(healthCheckServiceExtensions) == 0 {
return nil, ErrNoServiceExtensionHealthCheck
}
extensionsProperty, ok := config["extensions"]
if !ok {
return nil, errNoExtensions
}
extensions, ok := extensionsProperty.(map[interface{}]interface{})
if !ok {
return nil, errExtensionsNotAMap
}
// in the event of multiple health_check service extensions defined, we arbitrarily take the first one found
for _, healthCheckForProbe := range healthCheckServiceExtensions {
healthCheckExtension, ok := extensions[healthCheckForProbe]
if ok {
return createProbeFromExtension(healthCheckExtension)
}
}
return nil, errNoExtensionHealthCheck
}