// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package constants

// GetShootUseAsSeedAnnotation fetches the value for AnnotationShootUseAsSeed annotation.
// If not present, it fallbacks to AnnotationShootUseAsSeedDeprecated.
func GetShootUseAsSeedAnnotation(annotations map[string]string) (string, bool) {
	return getDeprecatedAnnotation(annotations, AnnotationShootUseAsSeed, AnnotationShootUseAsSeedDeprecated)
}

// GetShootIgnoreAlertsAnnotation fetches the value for AnnotationShootIgnoreAlerts annotation.
// If not present, it fallbacks to AnnotationShootIgnoreAlertsDeprecated.
func GetShootIgnoreAlertsAnnotation(annotations map[string]string) (string, bool) {
	return getDeprecatedAnnotation(annotations, AnnotationShootIgnoreAlerts, AnnotationShootIgnoreAlertsDeprecated)
}

func getDeprecatedAnnotation(annotations map[string]string, annotationKey, deprecatedAnnotationKey string) (string, bool) {
	val, ok := annotations[annotationKey]
	if !ok {
		val, ok = annotations[deprecatedAnnotationKey]
	}

	return val, ok
}

// GetShootVPADeploymentNames returns the names of all VPA related deployments related to shoot clusters.
func GetShootVPADeploymentNames() []string {
	return []string{
		DeploymentNameVPAAdmissionController,
		DeploymentNameVPARecommender,
		DeploymentNameVPAUpdater,
	}
}
