WIP - Suggesting changes (take2)
This is not yet completed, still working on things. Eventually the plan
is to provide the following changes
- restructure repo to be more aligned with https://github.com/golang-standards/project-layout
- add k8s probes
- modifications (golang range loops, etc) to follow some golang
practices
Change-Id: I6922cbc00b5ef17ceab183aba00a7fc59ab46480
diff --git a/cmd/ofagent/config.go b/cmd/ofagent/config.go
new file mode 100644
index 0000000..1ced4e8
--- /dev/null
+++ b/cmd/ofagent/config.go
@@ -0,0 +1,114 @@
+/*
+ Copyright 2019 the original author or authors.
+
+ 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 main
+
+import (
+ "flag"
+ "time"
+)
+
+type Config struct {
+ OFControllerEndPoint string
+ VolthaApiEndPoint string
+ LogLevel string
+ Banner bool
+ Version bool
+ ProbeEndPoint string
+ CpuProfile string
+ MemProfile string
+ DeviceListRefreshInterval time.Duration
+ ConnectionRetryDelay time.Duration
+ ConnectionMaxRetries int
+}
+
+func parseCommandLineArguments() (*Config, error) {
+ config := Config{}
+
+ flag.BoolVar(&(config.Banner),
+ "banner",
+ true,
+ "display application banner on startup")
+ flag.BoolVar(&(config.Version),
+ "version",
+ false,
+ "display application version and exit")
+ flag.StringVar(&(config.OFControllerEndPoint),
+ "controller",
+ "onos-openflow:6653",
+ "connection to the OF controller specified as host:port")
+ flag.StringVar(&(config.OFControllerEndPoint),
+ "O",
+ "onos-openflow:6653",
+ "(short) connection to the OF controller specified as host:port")
+ flag.StringVar(&(config.VolthaApiEndPoint),
+ "voltha",
+ "voltha-api-server:50060",
+ "connection to the VOLTHA API server specified as host:port")
+ flag.StringVar(&(config.VolthaApiEndPoint),
+ "A",
+ "voltha-api-server:50060",
+ "(short) connection to the VOLTHA API server specified as host:port")
+ flag.StringVar(&(config.ProbeEndPoint),
+ "probe",
+ ":8080",
+ "address and port on which to listen for k8s live and ready probe requests")
+ flag.StringVar(&(config.ProbeEndPoint),
+ "P",
+ ":8080",
+ "(short) address and port on which to listen for k8s live and ready probe requests")
+ flag.StringVar(&(config.LogLevel),
+ "loglevel",
+ "WARN",
+ "initial log level setting, overriden by any value set in configuration store")
+ flag.StringVar(&(config.LogLevel),
+ "L",
+ "WARN",
+ "(short) initial log level setting, overriden by any value set in configuration store")
+ flag.StringVar(&(config.CpuProfile),
+ "cpuprofile",
+ "",
+ "write cpu profile to 'file' if specified")
+ flag.StringVar(&(config.MemProfile),
+ "memprofile",
+ "",
+ "write memory profile to 'file' if specified")
+ flag.DurationVar(&(config.ConnectionRetryDelay),
+ "cd",
+ 3*time.Second,
+ "(short) delay to wait before connection establishment retries")
+ flag.DurationVar(&(config.ConnectionRetryDelay),
+ "connnection-delay",
+ 3*time.Second,
+ "delay to wait before connection establishment retries")
+ flag.IntVar(&(config.ConnectionMaxRetries),
+ "mr",
+ 0,
+ "(short) number of retries when attempting to estblish a connection, 0 is unlimted")
+ flag.IntVar(&(config.ConnectionMaxRetries),
+ "connnection-retries",
+ 0,
+ "number of retries when attempting to estblish a connection, 0 is unlimted")
+ flag.DurationVar(&(config.DeviceListRefreshInterval),
+ "dri",
+ 1*time.Minute,
+ "(short) interval between attempts to synchronize devices from voltha to ofagent")
+ flag.DurationVar(&(config.DeviceListRefreshInterval),
+ "device-refresh-interval",
+ 1*time.Minute,
+ "interval between attempts to synchronize devices from voltha to ofagent")
+
+ return &config, nil
+}