Inject and report version info

Build system injects version and environment
information similar to voltha-go builds.

Reports version via command line arg or via
"adapters" api call.

Change-Id: Ib21de7faac0d36c86a80c6d2f574c6e052b96459
diff --git a/config/config.go b/config/config.go
index 0a47ef2..17d270b 100644
--- a/config/config.go
+++ b/config/config.go
@@ -26,40 +26,42 @@
 
 // Open OLT default constants
 const (
-	EtcdStoreName           = "etcd"
-	defaultInstanceid       = "openOlt001"
-	defaultKafkaadapterhost = "127.0.0.1"
-	defaultKafkaadapterport = 9092
-	defaultKafkaclusterhost = "127.0.0.1"
-	defaultKafkaclusterport = 9094
-	defaultKvstoretype      = EtcdStoreName
-	defaultKvstoretimeout   = 5 //in seconds
-	defaultKvstorehost      = "127.0.0.1"
-	defaultKvstoreport      = 2379 // Consul = 8500; Etcd = 2379
-	defaultLoglevel         = 0
-	defaultBanner           = false
-	defaultTopic            = "openolt"
-	defaultCoretopic        = "rwcore"
-	defaultOnunumber        = 1
+	EtcdStoreName             = "etcd"
+	defaultInstanceid         = "openOlt001"
+	defaultKafkaadapterhost   = "127.0.0.1"
+	defaultKafkaadapterport   = 9092
+	defaultKafkaclusterhost   = "127.0.0.1"
+	defaultKafkaclusterport   = 9094
+	defaultKvstoretype        = EtcdStoreName
+	defaultKvstoretimeout     = 5 //in seconds
+	defaultKvstorehost        = "127.0.0.1"
+	defaultKvstoreport        = 2379 // Consul = 8500; Etcd = 2379
+	defaultLoglevel           = 0
+	defaultBanner             = false
+	defaultDisplayVersionOnly = false
+	defaultTopic              = "openolt"
+	defaultCoretopic          = "rwcore"
+	defaultOnunumber          = 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
+	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
+	DisplayVersionOnly bool
 }
 
 func init() {
@@ -69,20 +71,21 @@
 // NewAdapterFlags returns a new RWCore config
 func NewAdapterFlags() *AdapterFlags {
 	var adapterFlags = AdapterFlags{ // Default values
-		InstanceID:       defaultInstanceid,
-		KafkaAdapterHost: defaultKafkaadapterhost,
-		KafkaAdapterPort: defaultKafkaadapterport,
-		KafkaClusterHost: defaultKafkaclusterhost,
-		KafkaClusterPort: defaultKafkaclusterport,
-		KVStoreType:      defaultKvstoretype,
-		KVStoreTimeout:   defaultKvstoretimeout,
-		KVStoreHost:      defaultKvstorehost,
-		KVStorePort:      defaultKvstoreport,
-		Topic:            defaultTopic,
-		CoreTopic:        defaultCoretopic,
-		LogLevel:         defaultLoglevel,
-		OnuNumber:        defaultOnunumber,
-		Banner:           defaultBanner,
+		InstanceID:         defaultInstanceid,
+		KafkaAdapterHost:   defaultKafkaadapterhost,
+		KafkaAdapterPort:   defaultKafkaadapterport,
+		KafkaClusterHost:   defaultKafkaclusterhost,
+		KafkaClusterPort:   defaultKafkaclusterport,
+		KVStoreType:        defaultKvstoretype,
+		KVStoreTimeout:     defaultKvstoretimeout,
+		KVStoreHost:        defaultKvstorehost,
+		KVStorePort:        defaultKvstoreport,
+		Topic:              defaultTopic,
+		CoreTopic:          defaultCoretopic,
+		LogLevel:           defaultLoglevel,
+		OnuNumber:          defaultOnunumber,
+		Banner:             defaultBanner,
+		DisplayVersionOnly: defaultDisplayVersionOnly,
 	}
 	return &adapterFlags
 }
@@ -127,7 +130,10 @@
 	flag.IntVar(&(so.OnuNumber), "onu_number", defaultOnunumber, help)
 
 	help = fmt.Sprintf("Show startup banner log lines")
-	flag.BoolVar(&so.Banner, "banner", defaultBanner, help)
+	flag.BoolVar(&(so.Banner), "banner", defaultBanner, help)
+
+	help = fmt.Sprintf("Show version information and exit")
+	flag.BoolVar(&(so.DisplayVersionOnly), "version", defaultDisplayVersionOnly, help)
 
 	flag.Parse()