in internal/version.go [34:63]
func detectECKVersion(c *kubernetes.Clientset, namespace, userSpecifiedVersion string) *version.Version {
if userSpecifiedVersion != "" {
parsed, err := version.ParseSemantic(userSpecifiedVersion)
if err != nil {
logger.Println(err.Error())
return fallbackMaxVersion
}
return parsed
}
statefulSet, err := findOperatorStatefulSet(c, namespace)
if err != nil {
logger.Println(err.Error())
return fallbackMaxVersion
}
// we were not able to find a StatefulSet we might be dealing with an ECK operator deployed via OLM
if statefulSet == nil {
return extractVersionFromDeployment(c, namespace)
}
// since version 1.3 ECK uses standard labels
versionLabel := statefulSet.Labels["app.kubernetes.io/version"]
parsed, err := version.ParseSemantic(versionLabel)
if err == nil {
return parsed
}
return extractVersionFromContainers(statefulSet.Spec.Template.Spec.Containers)
}