che-operator/controllers/devworkspace/defaults/defaults.go

80 lines
2.9 KiB
Go

//
// Copyright (c) 2019-2023 Red Hat, Inc.
// This program and the accompanying materials are made
// available under the terms of the Eclipse Public License 2.0
// which is available at https://www.eclipse.org/legal/epl-2.0/
//
// SPDX-License-Identifier: EPL-2.0
//
// Contributors:
// Red Hat, Inc. - initial API and implementation
//
package defaults
import (
chev2 "github.com/eclipse-che/che-operator/api/v2"
"github.com/eclipse-che/che-operator/pkg/common/constants"
"github.com/eclipse-che/che-operator/pkg/deploy"
ctrl "sigs.k8s.io/controller-runtime"
)
const (
configAnnotationPrefix = "che.routing.controller.devfile.io/"
ConfigAnnotationCheManagerName = configAnnotationPrefix + "che-name"
ConfigAnnotationCheManagerNamespace = configAnnotationPrefix + "che-namespace"
ConfigAnnotationDevWorkspaceRoutingName = configAnnotationPrefix + "devworkspacerouting-name"
ConfigAnnotationDevWorkspaceRoutingNamespace = configAnnotationPrefix + "devworkspacerouting-namespace"
ConfigAnnotationEndpointName = configAnnotationPrefix + "endpoint-name"
ConfigAnnotationComponentName = configAnnotationPrefix + "component-name"
)
var (
log = ctrl.Log.WithName("defaults")
// If this looks weirdly out of place to you from all other labels, then you're completely right!
// These labels are the default ones used by che-operator and Che7. Let's keep the defaults
// the same for the ease of translation...
defaultGatewayConfigLabels = map[string]string{
"app": "che",
"component": "che-gateway-config",
}
)
func GetGatewayWorkspaceConfigMapName(workspaceID string) string {
return workspaceID + "-route"
}
func GetLabelsForComponent(cluster *chev2.CheCluster, component string) map[string]string {
return GetLabelsFromNames(cluster.Name, component)
}
func GetLabelsFromNames(appName string, component string) map[string]string {
return AddStandardLabelsFromNames(appName, component, map[string]string{})
}
func AddStandardLabelsForComponent(cluster *chev2.CheCluster, component string, labels map[string]string) map[string]string {
return AddStandardLabelsFromNames(cluster.Name, component, labels)
}
func AddStandardLabelsFromNames(appName string, component string, labels map[string]string) map[string]string {
labels["app.kubernetes.io/name"] = appName
labels["app.kubernetes.io/part-of"] = constants.CheEclipseOrg
labels["app.kubernetes.io/component"] = component
return labels
}
func GetIngressAnnotations(cluster *chev2.CheCluster) map[string]string {
if len(cluster.Spec.Networking.Annotations) > 0 {
return cluster.Spec.Networking.Annotations
}
return deploy.DefaultIngressAnnotations
}
func GetGatewayWorkspaceConfigMapLabels(cluster *chev2.CheCluster) map[string]string {
if len(cluster.Spec.Networking.Auth.Gateway.ConfigLabels) > 0 {
return cluster.Spec.Networking.Auth.Gateway.ConfigLabels
}
return defaultGatewayConfigLabels
}