blob: 32b7abb7f22b0a59288191a21d05d13cfe3f37a8 [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -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 */
khenaidoocfee5f42018-07-19 22:47:38 -040016package config
17
18import (
19 //"context"
20 "flag"
21 "fmt"
22 //dt "github.com/docker/docker/api/types"
23 //dc "github.com/docker/docker/client"
24 "os"
khenaidoocfee5f42018-07-19 22:47:38 -040025)
26
khenaidoo5c11af72018-07-20 17:21:05 -040027// RW Core service default constants
khenaidoocfee5f42018-07-19 22:47:38 -040028const (
khenaidoo5c11af72018-07-20 17:21:05 -040029 ConsulStoreName = "consul"
30 EtcdStoreName = "etcd"
31 default_InstanceID = "rwcore001"
32 default_GrpcPort = 50057
khenaidoobf6e7bb2018-08-14 22:27:29 -040033 default_GrpcHost = "127.0.0.1"
khenaidoo5c11af72018-07-20 17:21:05 -040034 default_KafkaAdapterHost = "10.100.198.240"
35 default_KafkaAdapterPort = 9092
36 default_KafkaClusterHost = "10.100.198.240"
37 default_KafkaClusterPort = 9094
38 default_KVStoreType = ConsulStoreName
39 default_KVStoreTimeout = 5 //in seconds
40 default_KVStoreHost = "10.100.198.240"
41 default_KVStorePort = 8500 // Etcd = 2379
khenaidooabad44c2018-08-03 16:58:35 -040042 default_LogLevel = 0
khenaidoo5c11af72018-07-20 17:21:05 -040043 default_Banner = false
44 default_CoreTopic = "rwcore"
45 default_RWCoreEndpoint = "rwcore"
46 default_RWCoreKey = "pki/voltha.key"
47 default_RWCoreCert = "pki/voltha.crt"
48 default_RWCoreCA = "pki/voltha-CA.pem"
khenaidoocfee5f42018-07-19 22:47:38 -040049)
50
khenaidoo5c11af72018-07-20 17:21:05 -040051// RWCoreFlags represents the set of configurations used by the read-write core service
khenaidoocfee5f42018-07-19 22:47:38 -040052type RWCoreFlags struct {
53 // Command line parameters
khenaidoo5c11af72018-07-20 17:21:05 -040054 InstanceID string
55 RWCoreEndpoint string
56 GrpcHost string
57 GrpcPort int
58 KafkaAdapterHost string
59 KafkaAdapterPort int
60 KafkaClusterHost string
61 KafkaClusterPort int
62 KVStoreType string
63 KVStoreTimeout int // in seconds
64 KVStoreHost string
65 KVStorePort int
66 CoreTopic string
67 LogLevel int
68 Banner bool
69 RWCoreKey string
70 RWCoreCert string
71 RWCoreCA string
khenaidoocfee5f42018-07-19 22:47:38 -040072}
73
khenaidoo5c11af72018-07-20 17:21:05 -040074// NewRWCoreFlags returns a new RWCore config
khenaidoocfee5f42018-07-19 22:47:38 -040075func NewRWCoreFlags() *RWCoreFlags {
76 var rwCoreFlag = RWCoreFlags{ // Default values
khenaidoo5c11af72018-07-20 17:21:05 -040077 InstanceID: default_InstanceID,
78 RWCoreEndpoint: default_RWCoreEndpoint,
79 GrpcHost: default_GrpcHost,
80 GrpcPort: default_GrpcPort,
81 KafkaAdapterHost: default_KafkaAdapterHost,
82 KafkaAdapterPort: default_KafkaAdapterPort,
83 KafkaClusterHost: default_KafkaClusterHost,
84 KafkaClusterPort: default_KafkaClusterPort,
85 KVStoreType: default_KVStoreType,
86 KVStoreTimeout: default_KVStoreTimeout,
87 KVStoreHost: default_KVStoreHost,
88 KVStorePort: default_KVStorePort,
89 CoreTopic: default_CoreTopic,
90 LogLevel: default_LogLevel,
91 Banner: default_Banner,
92 RWCoreKey: default_RWCoreKey,
93 RWCoreCert: default_RWCoreCert,
94 RWCoreCA: default_RWCoreCA,
khenaidoocfee5f42018-07-19 22:47:38 -040095 }
96 return &rwCoreFlag
97}
98
khenaidoo5c11af72018-07-20 17:21:05 -040099// ParseCommandArguments parses the arguments when running read-write core service
khenaidoocfee5f42018-07-19 22:47:38 -0400100func (cf *RWCoreFlags) ParseCommandArguments() {
khenaidoocfee5f42018-07-19 22:47:38 -0400101
khenaidoo5c11af72018-07-20 17:21:05 -0400102 var help string
khenaidoocfee5f42018-07-19 22:47:38 -0400103
khenaidoo5c11af72018-07-20 17:21:05 -0400104 help = fmt.Sprintf("RW core endpoint address")
105 flag.StringVar(&(cf.RWCoreEndpoint), "vcore-endpoint", default_RWCoreEndpoint, help)
khenaidoocfee5f42018-07-19 22:47:38 -0400106
khenaidoo5c11af72018-07-20 17:21:05 -0400107 help = fmt.Sprintf("GRPC server - host")
108 flag.StringVar(&(cf.GrpcHost), "grpc_host", default_GrpcHost, help)
khenaidoocfee5f42018-07-19 22:47:38 -0400109
khenaidoo5c11af72018-07-20 17:21:05 -0400110 help = fmt.Sprintf("GRPC server - port")
111 flag.IntVar(&(cf.GrpcPort), "grpc_port", default_GrpcPort, help)
112
113 help = fmt.Sprintf("Kafka - Adapter messaging host")
114 flag.StringVar(&(cf.KafkaAdapterHost), "kafka_adapter_host", default_KafkaAdapterHost, help)
115
116 help = fmt.Sprintf("Kafka - Adapter messaging port")
117 flag.IntVar(&(cf.KafkaAdapterPort), "kafka_adapter_port", default_KafkaAdapterPort, help)
118
119 help = fmt.Sprintf("Kafka - Cluster messaging host")
120 flag.StringVar(&(cf.KafkaClusterHost), "kafka_cluster_host", default_KafkaClusterHost, help)
121
122 help = fmt.Sprintf("Kafka - Cluster messaging port")
123 flag.IntVar(&(cf.KafkaClusterPort), "kafka_cluster_port", default_KafkaClusterPort, help)
124
125 help = fmt.Sprintf("RW Core topic")
126 flag.StringVar(&(cf.CoreTopic), "rw_core_topic", default_CoreTopic, help)
127
128 help = fmt.Sprintf("KV store type")
129 flag.StringVar(&(cf.KVStoreType), "kv_store_type", default_KVStoreType, help)
130
131 help = fmt.Sprintf("The default timeout when making a kv store request")
132 flag.IntVar(&(cf.KVStoreTimeout), "kv_store_request_timeout", default_KVStoreTimeout, help)
133
134 help = fmt.Sprintf("KV store host")
135 flag.StringVar(&(cf.KVStoreHost), "kv_store_host", default_KVStoreHost, help)
136
137 help = fmt.Sprintf("KV store port")
138 flag.IntVar(&(cf.KVStorePort), "kv_store_port", default_KVStorePort, help)
139
140 help = fmt.Sprintf("Log level")
141 flag.IntVar(&(cf.LogLevel), "log_level", default_LogLevel, help)
142
143 help = fmt.Sprintf("Show startup banner log lines")
144 flag.BoolVar(&cf.Banner, "banner", default_Banner, help)
khenaidoocfee5f42018-07-19 22:47:38 -0400145
146 flag.Parse()
147
148 // Update the necessary keys with the prefixes
khenaidoo5c11af72018-07-20 17:21:05 -0400149 //start := time.Now()
khenaidoocfee5f42018-07-19 22:47:38 -0400150 containerName := getContainerInfo()
khenaidoo5c11af72018-07-20 17:21:05 -0400151 //fmt.Println("container name:", containerName)
khenaidoocfee5f42018-07-19 22:47:38 -0400152 if len(containerName) > 0 {
153 cf.InstanceID = containerName
154 }
155
khenaidoo5c11af72018-07-20 17:21:05 -0400156 //fmt.Println("Inside config:", cf)
157 //elapsed := time.Since(start)
158 //fmt.Println("time:", elapsed/time.Second)
khenaidoocfee5f42018-07-19 22:47:38 -0400159}
160
161func getContainerInfo() string {
162 return os.Getenv("HOSTNAME")
163}