blob: 0a47ef2dd8b5bd089127654185dbef3f83eff3a6 [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"
23 "github.com/opencord/voltha-go/common/log"
24 "os"
25)
26
27// Open OLT default constants
28const (
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070029 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 defaultTopic = "openolt"
42 defaultCoretopic = "rwcore"
43 defaultOnunumber = 1
Girish Gowdru0c588b22019-04-23 23:24:56 -040044)
45
46// AdapterFlags represents the set of configurations used by the read-write adaptercore service
47type AdapterFlags struct {
48 // Command line parameters
49 InstanceID string
50 KafkaAdapterHost string
51 KafkaAdapterPort int
52 KafkaClusterHost string
53 KafkaClusterPort int
54 KVStoreType string
55 KVStoreTimeout int // in seconds
56 KVStoreHost string
57 KVStorePort int
58 Topic string
59 CoreTopic string
60 LogLevel int
61 OnuNumber int
62 Banner bool
63}
64
65func init() {
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070066 _, _ = log.AddPackage(log.JSON, log.WarnLevel, nil)
Girish Gowdru0c588b22019-04-23 23:24:56 -040067}
68
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070069// NewAdapterFlags returns a new RWCore config
Girish Gowdru0c588b22019-04-23 23:24:56 -040070func NewAdapterFlags() *AdapterFlags {
71 var adapterFlags = AdapterFlags{ // Default values
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070072 InstanceID: defaultInstanceid,
73 KafkaAdapterHost: defaultKafkaadapterhost,
74 KafkaAdapterPort: defaultKafkaadapterport,
75 KafkaClusterHost: defaultKafkaclusterhost,
76 KafkaClusterPort: defaultKafkaclusterport,
77 KVStoreType: defaultKvstoretype,
78 KVStoreTimeout: defaultKvstoretimeout,
79 KVStoreHost: defaultKvstorehost,
80 KVStorePort: defaultKvstoreport,
81 Topic: defaultTopic,
82 CoreTopic: defaultCoretopic,
83 LogLevel: defaultLoglevel,
84 OnuNumber: defaultOnunumber,
85 Banner: defaultBanner,
Girish Gowdru0c588b22019-04-23 23:24:56 -040086 }
87 return &adapterFlags
88}
89
90// ParseCommandArguments parses the arguments when running read-write adaptercore service
91func (so *AdapterFlags) ParseCommandArguments() {
92
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070093 help := fmt.Sprintf("Kafka - Adapter messaging host")
94 flag.StringVar(&(so.KafkaAdapterHost), "kafka_adapter_host", defaultKafkaadapterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -040095
96 help = fmt.Sprintf("Kafka - Adapter messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -070097 flag.IntVar(&(so.KafkaAdapterPort), "kafka_adapter_port", defaultKafkaadapterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -040098
99 help = fmt.Sprintf("Kafka - Cluster messaging host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700100 flag.StringVar(&(so.KafkaClusterHost), "kafka_cluster_host", defaultKafkaclusterhost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400101
102 help = fmt.Sprintf("Kafka - Cluster messaging port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700103 flag.IntVar(&(so.KafkaClusterPort), "kafka_cluster_port", defaultKafkaclusterport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400104
105 help = fmt.Sprintf("Open OLT topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700106 flag.StringVar(&(so.Topic), "adapter_topic", defaultTopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400107
108 help = fmt.Sprintf("Core topic")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700109 flag.StringVar(&(so.CoreTopic), "core_topic", defaultCoretopic, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400110
111 help = fmt.Sprintf("KV store type")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700112 flag.StringVar(&(so.KVStoreType), "kv_store_type", defaultKvstoretype, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400113
114 help = fmt.Sprintf("The default timeout when making a kv store request")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700115 flag.IntVar(&(so.KVStoreTimeout), "kv_store_request_timeout", defaultKvstoretimeout, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400116
117 help = fmt.Sprintf("KV store host")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700118 flag.StringVar(&(so.KVStoreHost), "kv_store_host", defaultKvstorehost, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400119
120 help = fmt.Sprintf("KV store port")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700121 flag.IntVar(&(so.KVStorePort), "kv_store_port", defaultKvstoreport, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400122
123 help = fmt.Sprintf("Log level")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700124 flag.IntVar(&(so.LogLevel), "log_level", defaultLoglevel, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400125
126 help = fmt.Sprintf("Number of ONUs")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700127 flag.IntVar(&(so.OnuNumber), "onu_number", defaultOnunumber, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400128
129 help = fmt.Sprintf("Show startup banner log lines")
Girish Gowdru6a80bbd2019-07-02 07:36:09 -0700130 flag.BoolVar(&so.Banner, "banner", defaultBanner, help)
Girish Gowdru0c588b22019-04-23 23:24:56 -0400131
132 flag.Parse()
133
134 containerName := getContainerInfo()
135 if len(containerName) > 0 {
136 so.InstanceID = containerName
137 }
138
139}
140
141func getContainerInfo() string {
142 return os.Getenv("HOSTNAME")
143}