vars/vars.go (65 lines of code) (raw):

// Copyright 2024 Google LLC // // 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 // // https://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 vars includes storing and obtaining provider wide variables and their values package vars import ( "fmt" "os" "strconv" ) type EnvVar struct { envVarName string defaultValue string isRequired bool } func (ev EnvVar) GetValue() (string, error) { osEnv := ev.envVarName osEnvValue, isPresent := os.LookupEnv(osEnv) if isPresent { return osEnvValue, nil } if ev.isRequired { return "", fmt.Errorf("%s: a required OS environment is not present", osEnv) } // Return default endpoint return ev.defaultValue, nil } func (ev EnvVar) GetBooleanValue() (bool, error) { oEnvValue, isPresent := os.LookupEnv(ev.envVarName) if isPresent { boolValue, err := strconv.ParseBool(oEnvValue) if err != nil { return false, fmt.Errorf("error parsing the boolean value: %v", err) } return boolValue, nil } if ev.isRequired { return false, fmt.Errorf("%s: a required OS environment is not present", ev.envVarName) } defaultBoolValue, err := strconv.ParseBool(ev.defaultValue) if err != nil { return false, fmt.Errorf("error parsing default value: %v", err) } return defaultBoolValue, nil } var IdentityBindingTokenEndPoint = EnvVar{ envVarName: "GAIA_TOKEN_EXCHANGE_ENDPOINT", defaultValue: "https://securetoken.googleapis.com/v1/identitybindingtoken", isRequired: false, } var GkeWorkloadIdentityEndPoint = EnvVar{ envVarName: "GKE_WORKLOAD_IDENTITY_ENDPOINT", defaultValue: "https://container.googleapis.com/v1", isRequired: false, } var ProviderName = EnvVar{ envVarName: "PROVIDER_NAME", defaultValue: "gcp", isRequired: false, } var UserAgentIdentifier = EnvVar{ envVarName: "USER_AGENT", defaultValue: "secrets-store-csi-driver-provider-gcp", isRequired: false, } var AllowNodepublishSeretRef = EnvVar{ envVarName: "ALLOW_NODE_PUBLISH_SECRET", defaultValue: "false", isRequired: false, }