func detectECKVersion()

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)
}