blob: ba70d5e091591d02fcb13f45ebf878779a5b5fcf [file] [log] [blame]
/*
* Copyright 2022-present Open Networking Foundation
* 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
*
* http://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 envutils provides the env parsing utility functions
package envutils
import (
"fmt"
"os"
"strconv"
)
// common constants
const (
// common environment variables
KafkaAdapterHost = "KAFKA_ADAPTER_HOST"
KafkaAdapterPort = "KAFKA_ADAPTER_PORT"
KafkaClusterHost = "KAFKA_CLUSTER_HOST"
KafkaClusterPort = "KAFKA_CLUSTER_PORT"
KvStoreType = "KV_STORE_TYPE"
KvStoreTimeout = "KV_STORE_TIMEOUT"
KvStoreHost = "KV_STORE_HOST"
KvStorePort = "KV_STORE_PORT"
AdapterTopic = "ADAPTER_TOPIC"
CoreTopic = "CORE_TOPIC"
EventTopic = "EVENT_TOPIC"
LogLevel = "LOG_LEVEL"
OnuNumber = "ONU_NUMBER"
Banner = "BANNER"
DisplayVersionOnly = "DISPLAY_VERSION_ONLY"
ProbeHost = "PROBE_HOST"
ProbePort = "PROBE_PORT"
LiveProbeInterval = "LIVE_PROBE_INTERVAL"
NotLiveProbeInterval = "NOT_LIVE_PROBE_INTERVAL"
VolthaHost = "VOLTHA_HOST"
VolthaPort = "VOLTHA_PORT"
HostName = "HOST_NAME"
// openolt adapter environment variables
HeartbeatCheckInterval = "HEARTBEAT_CHECK_INTERVAL"
HeartbeatFailReportInterval = "HEARTBEAT_FAIL_REPORT_INTERVAL"
GrpcTimeoutInterval = "GRPC_TIMEOUT_INTERVAL"
// rwcore environment variables
RWCoreEndpoint = "RW_CORE_ENDPOINT"
GrpcHost = "GRPC_HOST"
GrpcPort = "GRPC_PORT"
AffinityRouterTopic = "AFFINITY_ROUTER_TOPIC"
InCompetingMode = "IN_COMPETING_MODE"
KVTxnKeyDelTime = "KV_TXN_KEY_DEL_TIME"
KVStoreDataPrefix = "KV_STORE_DATA_PREFIX"
LongRunningRequestTimeout = "LONG_RUNNING_REQ_TIMEOUT"
DefaultRequestTimeout = "DEFAULT_REQ_TIMEOUT"
DefaultCoreTimeout = "DEFAULT_CORE_TIMEOUT"
CoreBindingKey = "CORE_BINDING_KEY"
CorePairTopic = "CORE_PAIR_TOPIC"
MaxConnectionRetries = "MAX_CONNECTION_RETRIES"
ConnectionRetryInterval = "CONNECTION_RETRY_INTERVAL"
// vgc environment variables
DeviceListRefreshInterval = "DEVICE_LIST_REFRESH_INTERVAL" // in seconds
CPUProfile = "CPU_PROFILE"
MemProfile = "MEM_PROFILE"
VendorID = "VENDOR_ID"
DeviceSyncDuration = "DEVICE_SYNC_DURATION"
MaxFlowRetryDuration = "MAX_FLOW_RETRY_DURATION"
// openonu environment variables
OmciPacketCapture = "SAVE_OMCI_PACKET_CAPTURE"
)
// ParseStringEnvVariable reads the environment variable and returns env as string
func ParseStringEnvVariable(envVarName string, defaultVal string) string {
envValue := os.Getenv(envVarName)
if envValue == "" {
fmt.Println("Environment variable " + envVarName + " undefined")
return defaultVal
}
return envValue
}
// ParseIntEnvVariable reads the environment variable and returns env as int64
func ParseIntEnvVariable(envVarName string, defaultVal int64) int64 {
envValue := os.Getenv(envVarName)
if envValue == "" {
fmt.Println("Environment variable "+envVarName+" undefined", envVarName)
return defaultVal
}
returnVal, err := strconv.Atoi(envValue)
if err != nil {
fmt.Println("Unable to convert string to integer environment variable")
return defaultVal
}
return int64(returnVal)
}
// ParseBoolEnvVariable reads the environment variable and returns env as boolean
func ParseBoolEnvVariable(envVarName string, defaultVal bool) bool {
envValue := os.Getenv(envVarName)
if envValue == "" {
fmt.Println("Environment variable " + envVarName + " undefined")
return defaultVal
}
if envValue == "true" || envValue == "True" {
return true
}
return false
}