SEBA-802 omci-test-result-support-in-exporter

Change-Id: Ib168b2c2f5e6dbe521ea94472869f1daeb2c9461
diff --git a/VERSION b/VERSION
index 0495c4a..e8ea05d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.3
+1.2.4
diff --git a/main.go b/main.go
index f57547f..3880e98 100644
--- a/main.go
+++ b/main.go
@@ -79,6 +79,12 @@
 	prometheus.MustRegister(volthaTxErrorPacketsTotal)
 	prometheus.MustRegister(volthaRxErrorPacketsTotal)
 
+	prometheus.MustRegister(VolthaOnuLaserBiasCurrent)
+	prometheus.MustRegister(volthaOnuTemperature)
+	prometheus.MustRegister(VolthaOnuPowerFeedVoltage)
+	prometheus.MustRegister(VolthaOnuMeanOpticalLaunchPower)
+	prometheus.MustRegister(VolthaOnuReceivedOpticalPower)
+
 	prometheus.MustRegister(onosTxBytesTotal)
 	prometheus.MustRegister(onosRxBytesTotal)
 	prometheus.MustRegister(onosTxPacketsTotal)
diff --git a/topic-exporter.go b/topic-exporter.go
index f4ae0bf..1713cfc 100644
--- a/topic-exporter.go
+++ b/topic-exporter.go
@@ -67,6 +67,47 @@
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
 
+	// optical parameters
+	VolthaOnuLaserBiasCurrent = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_laser_bias_current",
+			Help: "ONU Laser bias current value",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOnuTemperature = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_temperature",
+			Help: "ONU temperature value",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	VolthaOnuPowerFeedVoltage = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_power_feed_voltage",
+			Help: "ONU power feed voltage",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	VolthaOnuMeanOpticalLaunchPower = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_mean_optical_launch_power",
+			Help: "ONU mean optical launch power",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	VolthaOnuReceivedOpticalPower = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_received_optical_power",
+			Help: "ONU received optical power",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
 	// onos kpis
 	onosTxBytesTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
@@ -293,6 +334,58 @@
 				).Add(data.Metrics.Octets)
 			}
 
+		case "PON_Optical":
+			VolthaOnuLaserBiasCurrent.WithLabelValues(
+				data.Metadata.LogicalDeviceID,
+				data.Metadata.SerialNumber,
+				data.Metadata.DeviceID,
+				data.Metadata.Context.InterfaceID,
+				data.Metadata.Context.PonID,
+				data.Metadata.Context.PortNumber,
+				data.Metadata.Title,
+			).Set(data.Metrics.LaserBiasCurrent)
+
+			volthaOnuTemperature.WithLabelValues(
+				data.Metadata.LogicalDeviceID,
+				data.Metadata.SerialNumber,
+				data.Metadata.DeviceID,
+				data.Metadata.Context.InterfaceID,
+				data.Metadata.Context.PonID,
+				data.Metadata.Context.PortNumber,
+				data.Metadata.Title,
+			).Set(data.Metrics.Temperature)
+
+			VolthaOnuPowerFeedVoltage.WithLabelValues(
+				data.Metadata.LogicalDeviceID,
+				data.Metadata.SerialNumber,
+				data.Metadata.DeviceID,
+				data.Metadata.Context.InterfaceID,
+				data.Metadata.Context.PonID,
+				data.Metadata.Context.PortNumber,
+				data.Metadata.Title,
+			).Set(data.Metrics.PowerFeedVoltage)
+
+			VolthaOnuMeanOpticalLaunchPower.WithLabelValues(
+				data.Metadata.LogicalDeviceID,
+				data.Metadata.SerialNumber,
+				data.Metadata.DeviceID,
+				data.Metadata.Context.InterfaceID,
+				data.Metadata.Context.PonID,
+				data.Metadata.Context.PortNumber,
+				data.Metadata.Title,
+			).Set(data.Metrics.MeanOpticalLaunchPower)
+
+			VolthaOnuReceivedOpticalPower.WithLabelValues(
+				data.Metadata.LogicalDeviceID,
+				data.Metadata.SerialNumber,
+				data.Metadata.DeviceID,
+				data.Metadata.Context.InterfaceID,
+				data.Metadata.Context.PonID,
+				data.Metadata.Context.PortNumber,
+				data.Metadata.Title,
+			).Set(data.Metrics.ReceivedOpticalPower)
+
+
 		case "Ethernet_UNI_History":
 			// ONU. Do nothing.
 
diff --git a/types.go b/types.go
index 684518e..753b357 100644
--- a/types.go
+++ b/types.go
@@ -54,6 +54,12 @@
 	RxBcastPackets     float64 `json:"rx_bcast_packets"`
 	RxMulticastPackets float64 `json:"rx_mcast_packets"`
 
+	LaserBiasCurrent   float64 `json:"laser_bias_current"`
+	Temperature        float64 `json:"temperature"`
+	PowerFeedVoltage   float64 `json:"power_feed_voltage"`
+	MeanOpticalLaunchPower float64 `json:"mean_optical_launch_power"`
+	ReceivedOpticalPower   float64 `json:"received_optical_power"`
+
 	// ONU Ethernet_Bridge_Port_history
 	Packets            float64 `json:"packets"`
 	Octets             float64 `json:"octets"`