github.com/ironcore-dev/gardener-extension-provider-ironcore@v0.3.2-0.20240314231816-8336447fb9a0/pkg/apis/ironcore/validation/secret.go (about) 1 // SPDX-FileCopyrightText: 2023 SAP SE or an SAP affiliate company and IronCore contributors 2 // SPDX-License-Identifier: Apache-2.0 3 4 package validation 5 6 import ( 7 "fmt" 8 9 corev1 "k8s.io/api/core/v1" 10 apivalidation "k8s.io/apimachinery/pkg/api/validation" 11 12 "github.com/ironcore-dev/gardener-extension-provider-ironcore/pkg/ironcore" 13 ) 14 15 // ValidateCloudProviderSecret checks whether the given secret contains a valid ironcore service account. 16 func ValidateCloudProviderSecret(secret *corev1.Secret) error { 17 if _, ok := secret.Data[ironcore.TokenFieldName]; !ok { 18 return fmt.Errorf("missing field: %s in cloud provider secret", ironcore.TokenFieldName) 19 } 20 namespace, ok := secret.Data[ironcore.NamespaceFieldName] 21 if !ok { 22 return fmt.Errorf("missing field: %s in cloud provider secret", ironcore.NamespaceFieldName) 23 } 24 if _, ok := secret.Data[ironcore.UsernameFieldName]; !ok { 25 return fmt.Errorf("missing field: %s in cloud provider secret", ironcore.UsernameFieldName) 26 } 27 errs := apivalidation.ValidateNamespaceName(string(namespace), false) 28 if len(errs) > 0 { 29 return fmt.Errorf("invalid field: %s in cloud provider secret", ironcore.NamespaceFieldName) 30 } 31 32 return nil 33 }