[SEBA-128] Using new KPI format

Change-Id: I25aee363f35dd1380af990bdfd9eca65d30ffc54
diff --git a/prometheus.go b/prometheus.go
new file mode 100644
index 0000000..15ce599
--- /dev/null
+++ b/prometheus.go
@@ -0,0 +1,137 @@
+// Copyright 2018 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 main
+
+import "github.com/prometheus/client_golang/prometheus"
+
+var (
+	txBytesTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "tx_bytes_total",
+			Help: "Number of total bytes transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+	rxBytesTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "rx_bytes_total",
+			Help: "Number of total bytes received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+	txPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "tx_packets_total",
+			Help: "Number of total packets transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+	rxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "rx_packets_total",
+			Help: "Number of total packets received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	txErrorPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "tx_error_packets_total",
+			Help: "Number of total transmitted packets error",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	rxErrorPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "rx_error_packets_total",
+			Help: "Number of total received packets error",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+)
+
+func export(kpi KPI) {
+
+	for _, data := range kpi.SliceDatas {
+		txBytesTotal.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.TxBytes)
+
+		rxBytesTotal.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.RxBytes)
+
+		txPacketsTotal.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.TxPackets)
+
+		rxPacketsTotal.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.RxPackets)
+
+		txErrorPacketsTotal.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.TxErrorPackets)
+
+		rxErrorPacketsTotal.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.RxErrorPackets)
+
+		// TODO add metrics for:
+		// TxBcastPackets
+		// TxUnicastPackets
+		// TxMulticastPackets
+		// RxBcastPackets
+		// RxMulticastPackets
+
+	}
+}