Phaneendra Manda | 4c62c80 | 2019-03-06 21:37:49 +0530 | [diff] [blame] | 1 | /*
|
| 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 | */
|
| 16 | package config
|
| 17 |
|
| 18 | import (
|
| 19 | "flag"
|
| 20 | "fmt"
|
| 21 | "github.com/opencord/voltha-go/common/log"
|
| 22 | "os"
|
| 23 | )
|
| 24 |
|
| 25 | // Open OLT default constants
|
| 26 | const (
|
| 27 | EtcdStoreName = "etcd"
|
| 28 | default_InstanceID = "openOlt001"
|
| 29 | default_KafkaAdapterHost = "127.0.0.1"
|
| 30 | default_KafkaAdapterPort = 9092
|
| 31 | default_KafkaClusterHost = "127.0.0.1"
|
| 32 | default_KafkaClusterPort = 9094
|
| 33 | default_KVStoreType = EtcdStoreName
|
| 34 | default_KVStoreTimeout = 5 //in seconds
|
| 35 | default_KVStoreHost = "127.0.0.1"
|
| 36 | default_KVStorePort = 2379 // Consul = 8500; Etcd = 2379
|
| 37 | default_LogLevel = 0
|
| 38 | default_Banner = false
|
| 39 | default_Topic = "openolt"
|
| 40 | default_CoreTopic = "rwcore"
|
| 41 | default_OnuNumber = 1
|
| 42 | )
|
| 43 |
|
| 44 | // AdapterFlags represents the set of configurations used by the read-write adaptercore service
|
| 45 | type AdapterFlags struct {
|
| 46 | // Command line parameters
|
| 47 | InstanceID string
|
| 48 | KafkaAdapterHost string
|
| 49 | KafkaAdapterPort int
|
| 50 | KafkaClusterHost string
|
| 51 | KafkaClusterPort int
|
| 52 | KVStoreType string
|
| 53 | KVStoreTimeout int // in seconds
|
| 54 | KVStoreHost string
|
| 55 | KVStorePort int
|
| 56 | Topic string
|
| 57 | CoreTopic string
|
| 58 | LogLevel int
|
| 59 | OnuNumber int
|
| 60 | Banner bool
|
| 61 | }
|
| 62 |
|
| 63 | func init() {
|
| 64 | log.AddPackage(log.JSON, log.WarnLevel, nil)
|
| 65 | }
|
| 66 |
|
| 67 | // NewRWCoreFlags returns a new RWCore config
|
| 68 | func NewAdapterFlags() *AdapterFlags {
|
| 69 | var adapterFlags = AdapterFlags{ // Default values
|
| 70 | InstanceID: default_InstanceID,
|
| 71 | KafkaAdapterHost: default_KafkaAdapterHost,
|
| 72 | KafkaAdapterPort: default_KafkaAdapterPort,
|
| 73 | KafkaClusterHost: default_KafkaClusterHost,
|
| 74 | KafkaClusterPort: default_KafkaClusterPort,
|
| 75 | KVStoreType: default_KVStoreType,
|
| 76 | KVStoreTimeout: default_KVStoreTimeout,
|
| 77 | KVStoreHost: default_KVStoreHost,
|
| 78 | KVStorePort: default_KVStorePort,
|
| 79 | Topic: default_Topic,
|
| 80 | CoreTopic: default_CoreTopic,
|
| 81 | LogLevel: default_LogLevel,
|
| 82 | OnuNumber: default_OnuNumber,
|
| 83 | Banner: default_Banner,
|
| 84 | }
|
| 85 | return &adapterFlags
|
| 86 | }
|
| 87 |
|
| 88 | // ParseCommandArguments parses the arguments when running read-write adaptercore service
|
| 89 | func (so *AdapterFlags) ParseCommandArguments() {
|
| 90 |
|
| 91 | var help string
|
| 92 |
|
| 93 | help = fmt.Sprintf("Kafka - Adapter messaging host")
|
| 94 | flag.StringVar(&(so.KafkaAdapterHost), "kafka_adapter_host", default_KafkaAdapterHost, help)
|
| 95 |
|
| 96 | help = fmt.Sprintf("Kafka - Adapter messaging port")
|
| 97 | flag.IntVar(&(so.KafkaAdapterPort), "kafka_adapter_port", default_KafkaAdapterPort, help)
|
| 98 |
|
| 99 | help = fmt.Sprintf("Kafka - Cluster messaging host")
|
| 100 | flag.StringVar(&(so.KafkaClusterHost), "kafka_cluster_host", default_KafkaClusterHost, help)
|
| 101 |
|
| 102 | help = fmt.Sprintf("Kafka - Cluster messaging port")
|
| 103 | flag.IntVar(&(so.KafkaClusterPort), "kafka_cluster_port", default_KafkaClusterPort, help)
|
| 104 |
|
| 105 | help = fmt.Sprintf("Open OLT topic")
|
| 106 | flag.StringVar(&(so.Topic), "adapter_topic", default_Topic, help)
|
| 107 |
|
| 108 | help = fmt.Sprintf("Core topic")
|
| 109 | flag.StringVar(&(so.CoreTopic), "core_topic", default_CoreTopic, help)
|
| 110 |
|
| 111 | help = fmt.Sprintf("KV store type")
|
| 112 | flag.StringVar(&(so.KVStoreType), "kv_store_type", default_KVStoreType, help)
|
| 113 |
|
| 114 | help = fmt.Sprintf("The default timeout when making a kv store request")
|
| 115 | flag.IntVar(&(so.KVStoreTimeout), "kv_store_request_timeout", default_KVStoreTimeout, help)
|
| 116 |
|
| 117 | help = fmt.Sprintf("KV store host")
|
| 118 | flag.StringVar(&(so.KVStoreHost), "kv_store_host", default_KVStoreHost, help)
|
| 119 |
|
| 120 | help = fmt.Sprintf("KV store port")
|
| 121 | flag.IntVar(&(so.KVStorePort), "kv_store_port", default_KVStorePort, help)
|
| 122 |
|
| 123 | help = fmt.Sprintf("Log level")
|
| 124 | flag.IntVar(&(so.LogLevel), "log_level", default_LogLevel, help)
|
| 125 |
|
| 126 | help = fmt.Sprintf("Number of ONUs")
|
| 127 | flag.IntVar(&(so.OnuNumber), "onu_number", default_OnuNumber, help)
|
| 128 |
|
| 129 | help = fmt.Sprintf("Show startup banner log lines")
|
| 130 | flag.BoolVar(&so.Banner, "banner", default_Banner, help)
|
| 131 |
|
| 132 | flag.Parse()
|
| 133 |
|
| 134 | containerName := getContainerInfo()
|
| 135 | if len(containerName) > 0 {
|
| 136 | so.InstanceID = containerName
|
| 137 | }
|
| 138 |
|
| 139 | }
|
| 140 |
|
| 141 | func getContainerInfo() string {
|
| 142 | return os.Getenv("HOSTNAME")
|
| 143 | }
|