Path: blob/main/install/installer/pkg/config/v1/experimental/validation.go
2501 views
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package experimental56import (7corev1 "k8s.io/api/core/v1"89"github.com/gitpod-io/gitpod/installer/pkg/cluster"10"github.com/go-playground/validator/v10"11)1213var TracingSampleTypeList = map[TracingSampleType]struct{}{14TracingSampleTypeConst: {},15TracingSampleTypeProbabilistic: {},16TracingSampleTypeRateLimiting: {},17TracingSampleTypeRemote: {},18}1920var ServiceTypeList = map[corev1.ServiceType]struct{}{21corev1.ServiceTypeLoadBalancer: {},22corev1.ServiceTypeClusterIP: {},23corev1.ServiceTypeNodePort: {},24corev1.ServiceTypeExternalName: {},25}2627var ValidationChecks = map[string]validator.Func{28"tracing_sampler_type": func(fl validator.FieldLevel) bool {29_, ok := TracingSampleTypeList[TracingSampleType(fl.Field().String())]30return ok31},32"service_config_type": func(fl validator.FieldLevel) bool {33_, ok := ServiceTypeList[corev1.ServiceType(fl.Field().String())]34return ok35},36}3738func ClusterValidation(cfg *Config) cluster.ValidationChecks {39if cfg == nil {40return nil41}4243var res cluster.ValidationChecks44if cfg.Workspace != nil {45if scr := cfg.Workspace.RegistryFacade.RedisCache.PasswordSecret; scr != "" {46res = append(res, cluster.CheckSecret(scr, cluster.CheckSecretRequiredData("password")))47}4849if cfg.Workspace.WorkspaceCIDR != "" {50res = append(res, cluster.CheckWorkspaceCIDR(cfg.Workspace.WorkspaceCIDR))51}52}5354return res55}565758