/* | |
* 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") | |
} |