Commit 5e4d290b authored by Simon Pastor's avatar Simon Pastor
Browse files

splitting in 2 influx measurement types

parent d857756a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -809,7 +809,7 @@ func updateCache() {
				updateRequired = true
			} else {
				cachedMeas, found := cachedUeMeas.Measurements[ueMeas.Poa]
				if !found || cachedMeas.Rssi != ueMeas.Rssi || cachedMeas.Rsrp != ueMeas.Rsrp || cachedMeas.Rsrq != ueMeas.Rsrq {
				if !found || cachedMeas.Distance != ueMeas.Distance || cachedMeas.Rssi != ueMeas.Rssi || cachedMeas.Rsrp != ueMeas.Rsrp || cachedMeas.Rsrq != ueMeas.Rsrq {
					updateRequired = true
				}
			}
@@ -820,7 +820,7 @@ func updateCache() {
				measurement.Rsrp = ueMeas.Rsrp
				measurement.Rsrq = ueMeas.Rsrq
				measurement.Distance = ueMeas.Distance
				_ = ge.gisCache.SetMeasurement(ue.Name, ueMeas.SubType, ueMeas.Poa, measurement)
				_ = ge.gisCache.SetMeasurement(ue.Name, AssetTypeUe, ueMeas.Poa, ueMeas.SubType, measurement)
			}
		}
	}
+38 −38
Original line number Diff line number Diff line
@@ -39,15 +39,16 @@ const (
)

const (
	fieldDistance = "distance"
	fieldDistance  = "dist"
	fieldLatitude  = "lat"
	fieldLongitude = "long"
	fieldPoa = "poa"
	fieldPoaType = "poatype"
	fieldDest      = "dest"
	fieldDestType  = "destType"
	fieldRssi      = "rssi"
	fieldRsrp      = "rsrp"
	fieldRsrq      = "rsrq"
	fieldSrc       = "src"
	fieldSrcType   = "srcType"
)

const (
@@ -217,20 +218,20 @@ func (gc *GisCache) DelPosition(typ string, name string) {
}

// SetMeasurement - Create or update entry in DB
func (gc *GisCache) SetMeasurement(ue string, poaType string, poa string, meas *Measurement) error {
	key := gc.baseKey + measKey + ue + ":" + poa
func (gc *GisCache) SetMeasurement(src string, srcType string, dest string, destType string, meas *Measurement) error {
	key := gc.baseKey + measKey + src + ":" + dest

	// Prepare data
	fields := make(map[string]interface{})
        fields[fieldSrc] = fmt.Sprintf("%s", ue)
        fields[fieldPoa] = fmt.Sprintf("%s", poa)
        fields[fieldPoaType] = fmt.Sprintf("%s", poaType)
	fields[fieldSrc] = fmt.Sprintf("%s", src)
	fields[fieldSrcType] = fmt.Sprintf("%s", srcType)
	fields[fieldDest] = fmt.Sprintf("%s", dest)
	fields[fieldDestType] = fmt.Sprintf("%s", destType)
	fields[fieldRssi] = fmt.Sprintf("%f", meas.Rssi)
	fields[fieldRsrp] = fmt.Sprintf("%f", meas.Rsrp)
	fields[fieldRsrq] = fmt.Sprintf("%f", meas.Rsrq)
	fields[fieldDistance] = fmt.Sprintf("%f", meas.Distance)


	// Update entry in DB
	err := gc.rc.SetEntry(key, fields)
	if err != nil {
@@ -288,7 +289,6 @@ func getMeasurement(key string, fields map[string]string, userData interface{})
		meas.Distance = float32(distance)
	}


	// Add measurement to map
	ueMeas, found := measurementMap[ueName]
	if !found {
+62 −40
Original line number Diff line number Diff line
@@ -28,12 +28,16 @@ import (
const UeMetName = "meas"
const UeMetNameInflux = "gis"
const UeMetSrc = "src"
const UeMetPoa = "poa"
const UeMetPoaType = "poatype"
const UeMetSrcType = "srcType"
const UeMetDest = "dest"
const UeMetDestType = "destType"
const UeMetMeasType = "measType"
const UeMetMeasTypeDistance = "distance"
const UeMetMeasTypeSignal = "signal"
const UeMetRssi = "rssi"
const UeMetRsrp = "rsrp"
const UeMetRsrq = "rsrq"
const UeMetDistance = "distance"
const UeMetDistance = "dist"
const UeMetTime = "time"

type Metric struct {
@@ -44,8 +48,9 @@ type Metric struct {

type UeMetric struct {
	Src      string
	Poa      string
	PoaType  string
	SrcType  string
	Dest     string
	DestType string
	Time     interface{}
	Rssi     int32
	Rsrp     int32
@@ -173,15 +178,20 @@ func (gc *GisCache) formatCachedUeMetric(values map[string]interface{}) (metric
	}
	metric.Src = val.(string)

	if val, ok = values[UeMetPoa]; !ok {
	if val, ok = values[UeMetSrcType]; !ok {
		val = ""
	}
	metric.Poa = val.(string)
	metric.SrcType = val.(string)

	if val, ok = values[UeMetPoaType]; !ok {
	if val, ok = values[UeMetDest]; !ok {
		val = ""
	}
	metric.PoaType = val.(string)
	metric.Dest = val.(string)

	if val, ok = values[UeMetDestType]; !ok {
		val = ""
	}
	metric.DestType = val.(string)

	if val, ok = values[UeMetRssi]; !ok {
		val = ""
@@ -253,7 +263,8 @@ func (gc *GisCache) TakeUeMetricSnapshot() {
	// logTimeLapse("GetRedisMetric wildcard")

	// Prepare ue metrics list
	metricList := make([]Metric, len(valuesArray))
	metricSignalList := make([]Metric, len(valuesArray))
	metricDistanceList := make([]Metric, len(valuesArray))
	for index, values := range valuesArray {
		// Format network metric
		nm, err := gc.formatCachedUeMetric(values)
@@ -262,19 +273,30 @@ func (gc *GisCache) TakeUeMetricSnapshot() {
		}

		// Add metric to list
		metric := &metricList[index]
		metric.Name = UeMetNameInflux
		metric.Tags = map[string]string{UeMetSrc: nm.Src, UeMetPoa: nm.Poa, UeMetPoaType: nm.PoaType}
		metric.Fields = map[string]interface{}{
		metricSignal := &metricSignalList[index]
		metricSignal.Name = UeMetNameInflux
		metricSignal.Tags = map[string]string{UeMetSrc: nm.Src, UeMetSrcType: nm.SrcType, UeMetDest: nm.Dest, UeMetDestType: nm.DestType, UeMetMeasType: UeMetMeasTypeSignal}
		metricSignal.Fields = map[string]interface{}{
			UeMetRssi: nm.Rssi,
			UeMetRsrp: nm.Rsrp,
			UeMetRsrq: nm.Rsrq,
		}
		metricDistance := &metricDistanceList[index]
		metricDistance.Name = UeMetNameInflux
		metricDistance.Tags = map[string]string{UeMetSrc: nm.Src, UeMetSrcType: nm.SrcType, UeMetDest: nm.Dest, UeMetDestType: nm.DestType, UeMetMeasType: UeMetMeasTypeDistance}
		metricDistance.Fields = map[string]interface{}{
			UeMetDistance: nm.Distance,
		}

	}

	// Store metrics in influx
	err = gc.SetInfluxMetric(metricList)
	err = gc.SetInfluxMetric(metricSignalList)
	if err != nil {
		log.Error("Fail to write influx metrics with error: ", err.Error())
	}
	// Store metrics in influx
	err = gc.SetInfluxMetric(metricDistanceList)
	if err != nil {
		log.Error("Fail to write influx metrics with error: ", err.Error())
	}