blob: ba93d87228d7a256315cfe3154d0f55306932d6b [file] [log] [blame]
Girish Gowdru0c588b22019-04-23 23:24:56 -04001/*
2 * Copyright 2018-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 */
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"
Scott Baker51290152019-10-24 14:23:20 -070023 "github.com/opencord/voltha-lib-go/v2/pkg/log"
Girish Gowdru0c588b22019-04-23 23:24:56 -040024 "os"
25)
26
27// Open OLT default constants
28const (
Matt Jeanneretf880eb62019-07-16 20:08:03 -040029 EtcdStoreName = "etcd"
30 defaultInstanceid = "openOlt001"
31 defaultKafkaadapterhost = "127.0.0.1"
32 defaultKafkaadapterport = 9092
33 defaultKafkaclusterhost = "127.0.0.1"
34 defaultKafkaclusterport = 9094
35 defaultKvstoretype = EtcdStoreName
36 defaultKvstoretimeout = 5 //in seconds
37 defaultKvstorehost = "127.0.0.1"
38 defaultKvstoreport = 2379 // Consul = 8500; Etcd = 2379
39 defaultLoglevel = 0
40 defaultBanner = false
41 defaultDisplayVersionOnly = false
42 defaultTopic = "openolt"
43 defaultCoretopic = "rwcore"
Devmalya Paulfb990a52019-07-09 10:01:49 -040044 defaultEventtopic = "voltha.events"
Matt Jeanneretf880eb62019-07-16 20:08:03 -040045 defaultOnunumber = 1
Rohan Agrawal828bf4e2019-10-22 10:13:19 +000046 defaultProbeHost = ""
47 defaultProbePort = 8080
Girish Gowdru0c588b22019-04-23 23:24:56 -040048)
49
50// AdapterFlags represents the set of configurations used by the read-write adaptercore service
51type AdapterFlags struct {
52 // Command line parameters
Matt Jeanneretf880eb62019-07-16 20:08:03 -040053 InstanceID string
54 KafkaAdapterHost string
55 KafkaAdapterPort int
56 KafkaClusterHost string
57 KafkaClusterPort int
58 KVStoreType string
59 KVStoreTimeout int // in seconds
60 KVStoreHost string
61 KVStorePort int
62 Topic string
63 CoreTopic string
Devmalya Paulfb990a52019-07-09 10:01:49 -040064 EventTopic string
Matt Jeanneretf880eb62019-07-16 20:08:03 -040065 LogLevel int
66 OnuNumber int
67 Banner bool
68 DisplayVersionOnly bool
Rohan Agrawal828bf4e2019-10-22 10:13:19 +000069 ProbeHost string
70 ProbePort int
Girish Gowdru0c588b22019-04-23 23:24:56 -040071}
72
73func init() {
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070074 _, _ = log.AddPackage(log.JSON, log.WarnLevel, nil)
Girish Gowdru0c588b22019-04-23 23:24:56 -040075}
76
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070077// NewAdapterFlags returns a new RWCore config
Girish Gowdru0c588b22019-04-23 23:24:56 -040078func NewAdapterFlags() *AdapterFlags {
79 var adapterFlags = AdapterFlags{ // Default values
Matt Jeanneretf880eb62019-07-16 20:08:03 -040080 InstanceID: defaultInstanceid,
81 KafkaAdapterHost: defaultKafkaadapterhost,
82 KafkaAdapterPort: defaultKafkaadapterport,
83 KafkaClusterHost: defaultKafkaclusterhost,
84 KafkaClusterPort: defaultKafkaclusterport,
85 KVStoreType: defaultKvstoretype,
86 KVStoreTimeout: defaultKvstoretimeout,
87 KVStoreHost: defaultKvstorehost,
88 KVStorePort: defaultKvstoreport,
89 Topic: defaultTopic,
90 CoreTopic: defaultCoretopic,
Devmalya Paulfb990a52019-07-09 10:01:49 -040091 EventTopic: defaultEventtopic,
Matt Jeanneretf880eb62019-07-16 20:08:03 -040092 LogLevel: defaultLoglevel,
93 OnuNumber: defaultOnunumber,
94 Banner: defaultBanner,
95 DisplayVersionOnly: defaultDisplayVersionOnly,
Rohan Agrawal828bf4e2019-10-22 10:13:19 +000096 ProbeHost: defaultProbeHost,
97 ProbePort: defaultProbePort,
Girish Gowdru0c588b22019-04-23 23:24:56 -040098 }
99 return &adapterFlags
100}
101
102// ParseCommandArguments parses the arguments when running read-write adaptercore service
103func (so *AdapterFlags) ParseCommandArguments() {
104
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700105 help := fmt.Sprintf("Kafka - Adapter messaging host")
106 flag.StringVar(&(so.KafkaAdapterHost), "kafka_adapter_host", defaultKafkaadapterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400107
108 help = fmt.Sprintf("Kafka - Adapter messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700109 flag.IntVar(&(so.KafkaAdapterPort), "kafka_adapter_port", defaultKafkaadapterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400110
111 help = fmt.Sprintf("Kafka - Cluster messaging host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700112 flag.StringVar(&(so.KafkaClusterHost), "kafka_cluster_host", defaultKafkaclusterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400113
114 help = fmt.Sprintf("Kafka - Cluster messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700115 flag.IntVar(&(so.KafkaClusterPort), "kafka_cluster_port", defaultKafkaclusterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400116
117 help = fmt.Sprintf("Open OLT topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700118 flag.StringVar(&(so.Topic), "adapter_topic", defaultTopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400119
120 help = fmt.Sprintf("Core topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700121 flag.StringVar(&(so.CoreTopic), "core_topic", defaultCoretopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400122
Devmalya Paulfb990a52019-07-09 10:01:49 -0400123 help = fmt.Sprintf("Event topic")
124 flag.StringVar(&(so.EventTopic), "event_topic", defaultEventtopic, help)
125
Girish Gowdru0c588b22019-04-23 23:24:56 -0400126 help = fmt.Sprintf("KV store type")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700127 flag.StringVar(&(so.KVStoreType), "kv_store_type", defaultKvstoretype, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400128
129 help = fmt.Sprintf("The default timeout when making a kv store request")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700130 flag.IntVar(&(so.KVStoreTimeout), "kv_store_request_timeout", defaultKvstoretimeout, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400131
132 help = fmt.Sprintf("KV store host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700133 flag.StringVar(&(so.KVStoreHost), "kv_store_host", defaultKvstorehost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400134
135 help = fmt.Sprintf("KV store port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700136 flag.IntVar(&(so.KVStorePort), "kv_store_port", defaultKvstoreport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400137
138 help = fmt.Sprintf("Log level")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700139 flag.IntVar(&(so.LogLevel), "log_level", defaultLoglevel, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400140
141 help = fmt.Sprintf("Number of ONUs")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700142 flag.IntVar(&(so.OnuNumber), "onu_number", defaultOnunumber, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400143
144 help = fmt.Sprintf("Show startup banner log lines")
Matt Jeanneretf880eb62019-07-16 20:08:03 -0400145 flag.BoolVar(&(so.Banner), "banner", defaultBanner, help)
146
147 help = fmt.Sprintf("Show version information and exit")
148 flag.BoolVar(&(so.DisplayVersionOnly), "version", defaultDisplayVersionOnly, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400149
Rohan Agrawal828bf4e2019-10-22 10:13:19 +0000150 help = fmt.Sprintf("The address on which to listen to answer liveness and readiness probe queries over HTTP.")
151 flag.StringVar(&(so.ProbeHost), "probe_host", defaultProbeHost, help)
152
153 help = fmt.Sprintf("The port on which to listen to answer liveness and readiness probe queries over HTTP.")
154 flag.IntVar(&(so.ProbePort), "probe_port", defaultProbePort, help)
155
Girish Gowdru0c588b22019-04-23 23:24:56 -0400156 flag.Parse()
157
158 containerName := getContainerInfo()
159 if len(containerName) > 0 {
160 so.InstanceID = containerName
161 }
162
163}
164
165func getContainerInfo() string {
166 return os.Getenv("HOSTNAME")
167}