github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/configuration/core/config_query.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package core 21 22 import ( 23 "context" 24 25 corev1 "k8s.io/api/core/v1" 26 "sigs.k8s.io/controller-runtime/pkg/log" 27 28 appsv1alpha1 "github.com/1aal/kubeblocks/apis/apps/v1alpha1" 29 ) 30 31 // GetParameterFromConfiguration gets configure parameter 32 // ctx: apiserver context 33 // cli: apiserver client 34 // cluster: appsv1alpha1.Cluster 35 // component: component name 36 func GetParameterFromConfiguration(configMap *corev1.ConfigMap, allFiles bool, fieldPath ...string) ([]string, error) { 37 if configMap == nil || len(configMap.Data) == 0 { 38 return nil, MakeError("required configmap [%v]", configMap) 39 } 40 41 // Load configmap 42 wrapCfg, err := NewConfigLoader(CfgOption{ 43 Type: CfgCmType, 44 Log: log.FromContext(context.Background()), 45 CfgType: appsv1alpha1.Ini, 46 ConfigResource: FromConfigData(configMap.Data, nil), 47 }) 48 if err != nil { 49 return nil, WrapError(err, "failed to loader configmap") 50 } 51 52 res := make([]string, 0, len(fieldPath)) 53 option := NewCfgOptions("") 54 option.AllSearch = allFiles 55 for _, field := range fieldPath { 56 if rs, err := wrapCfg.Query(field, option); err != nil { 57 return nil, WrapError(err, "failed to get parameter:[%s]", field) 58 } else { 59 res = append(res, string(rs)) 60 } 61 } 62 63 return res, nil 64 }