| /* | |
| * Copyright 2018-present Open Networking Foundation | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package config | |
| import ( | |
| "flag" | |
| "fmt" | |
| "github.com/opencord/voltha-go/common/log" | |
| "os" | |
| ) | |
| // Open OLT default constants | |
| const ( | |
| EtcdStoreName = "etcd" | |
| default_InstanceID = "openOlt001" | |
| default_KafkaAdapterHost = "127.0.0.1" | |
| default_KafkaAdapterPort = 9092 | |
| default_KafkaClusterHost = "127.0.0.1" | |
| default_KafkaClusterPort = 9094 | |
| default_KVStoreType = EtcdStoreName | |
| default_KVStoreTimeout = 5 //in seconds | |
| default_KVStoreHost = "127.0.0.1" | |
| default_KVStorePort = 2379 // Consul = 8500; Etcd = 2379 | |
| default_LogLevel = 0 | |
| default_Banner = false | |
| default_Topic = "openolt" | |
| default_CoreTopic = "rwcore" | |
| default_OnuNumber = 1 | |
| ) | |
| // AdapterFlags represents the set of configurations used by the read-write adaptercore service | |
| type AdapterFlags struct { | |
| // Command line parameters | |
| InstanceID string | |
| KafkaAdapterHost string | |
| KafkaAdapterPort int | |
| KafkaClusterHost string | |
| KafkaClusterPort int | |
| KVStoreType string | |
| KVStoreTimeout int // in seconds | |
| KVStoreHost string | |
| KVStorePort int | |
| Topic string | |
| CoreTopic string | |
| LogLevel int | |
| OnuNumber int | |
| Banner bool | |
| } | |
| func init() { | |
| log.AddPackage(log.JSON, log.WarnLevel, nil) | |
| } | |
| // NewRWCoreFlags returns a new RWCore config | |
| func NewAdapterFlags() *AdapterFlags { | |
| var adapterFlags = AdapterFlags{ // Default values | |
| InstanceID: default_InstanceID, | |
| KafkaAdapterHost: default_KafkaAdapterHost, | |
| KafkaAdapterPort: default_KafkaAdapterPort, | |
| KafkaClusterHost: default_KafkaClusterHost, | |
| KafkaClusterPort: default_KafkaClusterPort, | |
| KVStoreType: default_KVStoreType, | |
| KVStoreTimeout: default_KVStoreTimeout, | |
| KVStoreHost: default_KVStoreHost, | |
| KVStorePort: default_KVStorePort, | |
| Topic: default_Topic, | |
| CoreTopic: default_CoreTopic, | |
| LogLevel: default_LogLevel, | |
| OnuNumber: default_OnuNumber, | |
| Banner: default_Banner, | |
| } | |
| return &adapterFlags | |
| } | |
| // ParseCommandArguments parses the arguments when running read-write adaptercore service | |
| func (so *AdapterFlags) ParseCommandArguments() { | |
| var help string | |
| help = fmt.Sprintf("Kafka - Adapter messaging host") | |
| flag.StringVar(&(so.KafkaAdapterHost), "kafka_adapter_host", default_KafkaAdapterHost, help) | |
| help = fmt.Sprintf("Kafka - Adapter messaging port") | |
| flag.IntVar(&(so.KafkaAdapterPort), "kafka_adapter_port", default_KafkaAdapterPort, help) | |
| help = fmt.Sprintf("Kafka - Cluster messaging host") | |
| flag.StringVar(&(so.KafkaClusterHost), "kafka_cluster_host", default_KafkaClusterHost, help) | |
| help = fmt.Sprintf("Kafka - Cluster messaging port") | |
| flag.IntVar(&(so.KafkaClusterPort), "kafka_cluster_port", default_KafkaClusterPort, help) | |
| help = fmt.Sprintf("Open OLT topic") | |
| flag.StringVar(&(so.Topic), "adapter_topic", default_Topic, help) | |
| help = fmt.Sprintf("Core topic") | |
| flag.StringVar(&(so.CoreTopic), "core_topic", default_CoreTopic, help) | |
| help = fmt.Sprintf("KV store type") | |
| flag.StringVar(&(so.KVStoreType), "kv_store_type", default_KVStoreType, help) | |
| help = fmt.Sprintf("The default timeout when making a kv store request") | |
| flag.IntVar(&(so.KVStoreTimeout), "kv_store_request_timeout", default_KVStoreTimeout, help) | |
| help = fmt.Sprintf("KV store host") | |
| flag.StringVar(&(so.KVStoreHost), "kv_store_host", default_KVStoreHost, help) | |
| help = fmt.Sprintf("KV store port") | |
| flag.IntVar(&(so.KVStorePort), "kv_store_port", default_KVStorePort, help) | |
| help = fmt.Sprintf("Log level") | |
| flag.IntVar(&(so.LogLevel), "log_level", default_LogLevel, help) | |
| help = fmt.Sprintf("Number of ONUs") | |
| flag.IntVar(&(so.OnuNumber), "onu_number", default_OnuNumber, help) | |
| help = fmt.Sprintf("Show startup banner log lines") | |
| flag.BoolVar(&so.Banner, "banner", default_Banner, help) | |
| flag.Parse() | |
| containerName := getContainerInfo() | |
| if len(containerName) > 0 { | |
| so.InstanceID = containerName | |
| } | |
| } | |
| func getContainerInfo() string { | |
| return os.Getenv("HOSTNAME") | |
| } |