package messages
-import (
- "fmt"
- "regexp"
- "strconv"
- "strings"
-
- "oransc.org/usecase/oduclosedloop/internal/structures"
-)
-
type StdDefinedMessage struct {
Event Event `json:"event"`
}
}
type CommonEventHeader struct {
- Domain string `json:"domain"`
- StndDefinedNamespace string `json:"stndDefinedNamespace"`
+ Domain string `json:"domain"`
+ EventId string `json:"eventId"`
+ EventName string `json:"eventName"`
+ EventType string `json:"eventType"`
+ Sequence int `json:"sequence"`
+ Priority string `json:"priority"`
+ ReportingEntityId string `json:"reportingEntityId"`
+ ReportingEntityName string `json:"reportingEntityName"`
+ SourceId string `json:"sourceId"`
+ SourceName string `json:"sourceName"`
+ StartEpochMicrosec int64 `json:"startEpochMicrosec"`
+ LastEpochMicrosec int64 `json:"lastEpochMicrosec"`
+ NfNamingCode string `json:"nfNamingCode"`
+ NfVendorName string `json:"nfVendorName"`
+ StndDefinedNamespace string `json:"stndDefinedNamespace"`
+ TimeZoneOffset string `json:"timeZoneOffset"`
+ Version string `json:"version"`
+ VesEventListenerVersion string `json:"vesEventListenerVersion"`
}
type StndDefinedFields struct {
}
type Data struct {
- DataId string `json:"id"`
- Measurements []Measurement `json:"measurements"`
+ DataId string `json:"id"`
+ StartTime string `json:"start-time"`
+ AdministrativeState string `json:"administrative-state"`
+ OperationalState string `json:"operational-state"`
+ UserLabel string `json:"user-label"`
+ JobTag string `json:"job-tag"`
+ GranularityPeriod int `json:"granularity-period"`
+ Measurements []Measurement `json:"measurements"`
}
type Measurement struct {
func (message StdDefinedMessage) GetMeasurements() []Measurement {
return message.Event.StndDefinedFields.Data.Measurements
}
-
-func (meas Measurement) CreateSliceMetric() *structures.SliceMetric {
- var pmName string
- var duid, cellid string
- var sd, sst int
-
- typeParts := strings.Split(meas.MeasurementTypeInstanceReference, "/")
- for _, part := range typeParts {
- if strings.Contains(part, "distributed-unit-functions") {
- duid = getValueInsideQuotes(part)
-
- } else if strings.Contains(part, "cell[") {
- cellid = getValueInsideQuotes(part)
-
- } else if strings.Contains(part, "performance-measurement-type") {
- pmName = getValueInsideQuotes(part)
-
- } else if strings.Contains(part, "slice-differentiator") {
- sd = getPropertyNumber(part)
-
- } else if strings.Contains(part, "slice-differentiator") {
- res, err := strconv.Atoi(getValueInsideQuotes(part))
- if err != nil {
- sst = -1
- }
- sst = res
- }
- }
-
- sm := structures.NewSliceMetric(duid, cellid, sd, sst)
- sm.PM[pmName] = meas.Value
- return sm
-}
-
-func getValueInsideQuotes(text string) string {
- re := regexp.MustCompile(`\'(.*?)\'`)
-
- match := re.FindAllString(text, -1)
- var res string
- if len(match) == 1 {
- res = strings.Trim(match[0], "'")
- }
- return res
-}
-
-func getPropertyNumber(text string) int {
- re := regexp.MustCompile("[0-9]+")
- match := re.FindAllString(text, -1)
- var res int
- var err error
- if len(match) == 1 {
- res, err = strconv.Atoi(match[0])
- if err != nil {
- fmt.Println(err)
- return -1
- }
- }
- return res
-}