blob: a9fa93689029e76ef942d1899b76a46f8be840c2 [file] [log] [blame]
Girish Gowdru0c588b22019-04-23 23:24:56 -04001/*
cbabu116b73f2019-12-10 17:56:32 +05302* Copyright 2018-present Open Networking Foundation
Girish Gowdru0c588b22019-04-23 23:24:56 -04003
cbabu116b73f2019-12-10 17:56:32 +05304* 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
Girish Gowdru0c588b22019-04-23 23:24:56 -04007
cbabu116b73f2019-12-10 17:56:32 +05308* http://www.apache.org/licenses/LICENSE-2.0
Girish Gowdru0c588b22019-04-23 23:24:56 -04009
cbabu116b73f2019-12-10 17:56:32 +053010* 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.
Girish Gowdru0c588b22019-04-23 23:24:56 -040015 */
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070016
17//Package config provides the Log, kvstore, Kafka configuration
Girish Gowdru0c588b22019-04-23 23:24:56 -040018package config
19
20import (
21 "flag"
22 "fmt"
Girish Gowdru0c588b22019-04-23 23:24:56 -040023 "os"
cbabu116b73f2019-12-10 17:56:32 +053024 "time"
Chaitrashree G Sa4649252020-03-11 21:24:11 -040025
26 "github.com/opencord/voltha-lib-go/v3/pkg/log"
Girish Gowdru0c588b22019-04-23 23:24:56 -040027)
28
29// Open OLT default constants
30const (
cbabu116b73f2019-12-10 17:56:32 +053031 EtcdStoreName = "etcd"
32 defaultInstanceid = "openOlt001"
33 defaultKafkaadapterhost = "127.0.0.1"
34 defaultKafkaadapterport = 9092
35 defaultKafkaclusterhost = "127.0.0.1"
36 defaultKafkaclusterport = 9094
37 defaultKvstoretype = EtcdStoreName
38 defaultKvstoretimeout = 5 //in seconds
39 defaultKvstorehost = "127.0.0.1"
40 defaultKvstoreport = 2379 // Consul = 8500; Etcd = 2379
David Bainbridge2b3d4882020-03-17 15:06:39 -070041 defaultLoglevel = "WARN"
cbabu116b73f2019-12-10 17:56:32 +053042 defaultBanner = false
43 defaultDisplayVersionOnly = false
44 defaultTopic = "openolt"
45 defaultCoretopic = "rwcore"
46 defaultEventtopic = "voltha.events"
47 defaultOnunumber = 1
48 defaultProbeHost = ""
49 defaultProbePort = 8080
50 defaultLiveProbeInterval = 60 * time.Second
51 defaultNotLiveProbeInterval = 5 * time.Second // Probe more frequently when not alive
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053052 //defaultHearbeatFailReportInterval is the time in seconds the adapter will keep checking the hardware for heartbeat.
Chaitrashree G Sa4649252020-03-11 21:24:11 -040053 defaultHearbeatCheckInterval = 15 * time.Second
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053054 // defaultHearbeatFailReportInterval is the time adapter will wait before updating the state to the core.
Chaitrashree G Sa4649252020-03-11 21:24:11 -040055 defaultHearbeatFailReportInterval = 0 * time.Second
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053056 //defaultGrpcTimeoutInterval is the time in seconds a grpc call will wait before returning error.
57 defaultGrpcTimeoutInterval = 2 * time.Second
Girish Gowdru0c588b22019-04-23 23:24:56 -040058)
59
60// AdapterFlags represents the set of configurations used by the read-write adaptercore service
61type AdapterFlags struct {
62 // Command line parameters
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053063 InstanceID string
64 KafkaAdapterHost string
65 KafkaAdapterPort int
66 KafkaClusterHost string
67 KafkaClusterPort int
68 KVStoreType string
69 KVStoreTimeout int // in seconds
70 KVStoreHost string
71 KVStorePort int
72 Topic string
73 CoreTopic string
74 EventTopic string
Rohan Agrawal2488f192020-01-31 09:26:55 +000075 LogLevel string
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053076 OnuNumber int
77 Banner bool
78 DisplayVersionOnly bool
79 ProbeHost string
80 ProbePort int
81 LiveProbeInterval time.Duration
82 NotLiveProbeInterval time.Duration
83 HeartbeatCheckInterval time.Duration
84 HeartbeatFailReportInterval time.Duration
85 GrpcTimeoutInterval time.Duration
Girish Gowdru0c588b22019-04-23 23:24:56 -040086}
87
88func init() {
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070089 _, _ = log.AddPackage(log.JSON, log.WarnLevel, nil)
Girish Gowdru0c588b22019-04-23 23:24:56 -040090}
91
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070092// NewAdapterFlags returns a new RWCore config
Girish Gowdru0c588b22019-04-23 23:24:56 -040093func NewAdapterFlags() *AdapterFlags {
94 var adapterFlags = AdapterFlags{ // Default values
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +053095 InstanceID: defaultInstanceid,
96 KafkaAdapterHost: defaultKafkaadapterhost,
97 KafkaAdapterPort: defaultKafkaadapterport,
98 KafkaClusterHost: defaultKafkaclusterhost,
99 KafkaClusterPort: defaultKafkaclusterport,
100 KVStoreType: defaultKvstoretype,
101 KVStoreTimeout: defaultKvstoretimeout,
102 KVStoreHost: defaultKvstorehost,
103 KVStorePort: defaultKvstoreport,
104 Topic: defaultTopic,
105 CoreTopic: defaultCoretopic,
106 EventTopic: defaultEventtopic,
107 LogLevel: defaultLoglevel,
108 OnuNumber: defaultOnunumber,
109 Banner: defaultBanner,
110 DisplayVersionOnly: defaultDisplayVersionOnly,
111 ProbeHost: defaultProbeHost,
112 ProbePort: defaultProbePort,
113 LiveProbeInterval: defaultLiveProbeInterval,
114 NotLiveProbeInterval: defaultNotLiveProbeInterval,
115 HeartbeatCheckInterval: defaultHearbeatCheckInterval,
116 HeartbeatFailReportInterval: defaultHearbeatFailReportInterval,
117 GrpcTimeoutInterval: defaultGrpcTimeoutInterval,
Girish Gowdru0c588b22019-04-23 23:24:56 -0400118 }
119 return &adapterFlags
120}
121
122// ParseCommandArguments parses the arguments when running read-write adaptercore service
123func (so *AdapterFlags) ParseCommandArguments() {
124
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700125 help := fmt.Sprintf("Kafka - Adapter messaging host")
126 flag.StringVar(&(so.KafkaAdapterHost), "kafka_adapter_host", defaultKafkaadapterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400127
128 help = fmt.Sprintf("Kafka - Adapter messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700129 flag.IntVar(&(so.KafkaAdapterPort), "kafka_adapter_port", defaultKafkaadapterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400130
131 help = fmt.Sprintf("Kafka - Cluster messaging host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700132 flag.StringVar(&(so.KafkaClusterHost), "kafka_cluster_host", defaultKafkaclusterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400133
134 help = fmt.Sprintf("Kafka - Cluster messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700135 flag.IntVar(&(so.KafkaClusterPort), "kafka_cluster_port", defaultKafkaclusterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400136
137 help = fmt.Sprintf("Open OLT topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700138 flag.StringVar(&(so.Topic), "adapter_topic", defaultTopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400139
140 help = fmt.Sprintf("Core topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700141 flag.StringVar(&(so.CoreTopic), "core_topic", defaultCoretopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400142
Devmalya Paulfb990a52019-07-09 10:01:49 -0400143 help = fmt.Sprintf("Event topic")
144 flag.StringVar(&(so.EventTopic), "event_topic", defaultEventtopic, help)
145
Girish Gowdru0c588b22019-04-23 23:24:56 -0400146 help = fmt.Sprintf("KV store type")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700147 flag.StringVar(&(so.KVStoreType), "kv_store_type", defaultKvstoretype, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400148
149 help = fmt.Sprintf("The default timeout when making a kv store request")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700150 flag.IntVar(&(so.KVStoreTimeout), "kv_store_request_timeout", defaultKvstoretimeout, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400151
152 help = fmt.Sprintf("KV store host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700153 flag.StringVar(&(so.KVStoreHost), "kv_store_host", defaultKvstorehost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400154
155 help = fmt.Sprintf("KV store port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700156 flag.IntVar(&(so.KVStorePort), "kv_store_port", defaultKvstoreport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400157
158 help = fmt.Sprintf("Log level")
Rohan Agrawal2488f192020-01-31 09:26:55 +0000159 flag.StringVar(&(so.LogLevel), "log_level", defaultLoglevel, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400160
161 help = fmt.Sprintf("Number of ONUs")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700162 flag.IntVar(&(so.OnuNumber), "onu_number", defaultOnunumber, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400163
164 help = fmt.Sprintf("Show startup banner log lines")
Matt Jeanneretf880eb62019-07-16 20:08:03 -0400165 flag.BoolVar(&(so.Banner), "banner", defaultBanner, help)
166
167 help = fmt.Sprintf("Show version information and exit")
168 flag.BoolVar(&(so.DisplayVersionOnly), "version", defaultDisplayVersionOnly, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400169
Rohan Agrawal828bf4e2019-10-22 10:13:19 +0000170 help = fmt.Sprintf("The address on which to listen to answer liveness and readiness probe queries over HTTP.")
171 flag.StringVar(&(so.ProbeHost), "probe_host", defaultProbeHost, help)
172
173 help = fmt.Sprintf("The port on which to listen to answer liveness and readiness probe queries over HTTP.")
174 flag.IntVar(&(so.ProbePort), "probe_port", defaultProbePort, help)
175
cbabu116b73f2019-12-10 17:56:32 +0530176 help = fmt.Sprintf("Number of seconds for the default liveliness check")
177 flag.DurationVar(&(so.LiveProbeInterval), "live_probe_interval", defaultLiveProbeInterval, help)
178
179 help = fmt.Sprintf("Number of seconds for liveliness check if probe is not running")
180 flag.DurationVar(&(so.NotLiveProbeInterval), "not_live_probe_interval", defaultNotLiveProbeInterval, help)
181
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +0530182 help = fmt.Sprintf("Number of seconds for heartbeat check interval.")
183 flag.DurationVar(&(so.HeartbeatCheckInterval), "hearbeat_check_interval", defaultHearbeatCheckInterval, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400184
Abhilash Laxmeshwarf9942e92020-01-07 15:32:44 +0530185 help = fmt.Sprintf("Number of seconds adapter has to wait before reporting core on the hearbeat check failure.")
186 flag.DurationVar(&(so.HeartbeatFailReportInterval), "hearbeat_fail_interval", defaultHearbeatFailReportInterval, help)
187
188 help = fmt.Sprintf("Number of seconds for GRPC timeout.")
189 flag.DurationVar(&(so.GrpcTimeoutInterval), "grpc_timeout_interval", defaultGrpcTimeoutInterval, help)
190
191 flag.Parse()
Girish Gowdru0c588b22019-04-23 23:24:56 -0400192 containerName := getContainerInfo()
193 if len(containerName) > 0 {
194 so.InstanceID = containerName
195 }
196
197}
198
199func getContainerInfo() string {
200 return os.Getenv("HOSTNAME")
201}