blob: a8ae760b8abf021faeb4d9d8b4d23336328fc44b [file] [log] [blame]
Elia Battistonc8d0d462022-02-22 16:30:51 +01001/*
2* Copyright 2022-present Open Networking Foundation
3
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7
8* http://www.apache.org/licenses/LICENSE-2.0
9
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15 */
16
17package config
18
19import (
20 "context"
21 "flag"
22)
23
24type BBFAdapterConfig struct {
25 PrintVersion bool
26 PrintBanner bool
27 LogLevel string
28 ProbeAddress string
29 TraceEnabled bool
30 TraceAgentAddress string
31 LogCorrelationEnabled bool
32}
33
34// LoadConfig loads the BBF adapter configuration through
35// default values and CLI arguments
36func LoadConfig(ctx context.Context) *BBFAdapterConfig {
37 conf := getDefaultConfig()
38
39 flag.StringVar(&conf.LogLevel, "log_level", conf.LogLevel, "Log level (DEBUG, INFO, WARN, ERROR)")
40 flag.BoolVar(&conf.PrintVersion, "version", conf.PrintVersion, "Print the version and exit")
41 flag.BoolVar(&conf.PrintBanner, "banner", conf.PrintBanner, "Print the banner at startup")
42 flag.StringVar(&conf.ProbeAddress, "probe_address", conf.ProbeAddress, "The address on which to listen to answer liveness and readiness probe queries over HTTP")
43 flag.BoolVar(&conf.TraceEnabled, "trace_enabled", conf.TraceEnabled, "Whether to send logs to tracing agent")
44 flag.StringVar(&conf.TraceAgentAddress, "trace_agent_address", conf.TraceAgentAddress, "The address of tracing agent to which span info should be sent")
45 flag.BoolVar(&conf.LogCorrelationEnabled, "log_correlation_enabled", conf.LogCorrelationEnabled, "Whether to enrich log statements with fields denoting operation being executed for achieving correlation")
46
47 flag.Parse()
48
49 return conf
50}
51
52// getDefaultConfig returns a BBF Adapter configuration with default values
53func getDefaultConfig() *BBFAdapterConfig {
54 return &BBFAdapterConfig{
55 LogLevel: "ERROR",
56 PrintVersion: false,
57 PrintBanner: false,
58 ProbeAddress: ":8080",
59 TraceEnabled: false,
60 TraceAgentAddress: "127.0.0.1:6831",
61 LogCorrelationEnabled: true,
62 }
63}