2 // ========================LICENSE_START=================================
5 // Copyright (C) 2022: Nordix Foundation
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 // ========================LICENSE_END===================================
21 package sliceassurance
28 log "github.com/sirupsen/logrus"
29 "oransc.org/usecase/oduclosedloop/icsversion/internal/structures"
30 "oransc.org/usecase/oduclosedloop/icsversion/messages"
33 type MessageHandler struct {
34 data *structures.SliceAssuranceMeas
37 func NewMessageHandler(data *structures.SliceAssuranceMeas) *MessageHandler {
38 return &MessageHandler{
43 func (handler MessageHandler) ProcessMessage(body io.ReadCloser) {
44 log.Debug("Process messages from Dmaap mediator")
46 if messages := getVesMessages(body); messages != nil {
47 stdMessages := getStdMessages(messages)
49 for _, message := range stdMessages {
50 for _, meas := range message.GetMeasurements() {
51 log.Infof("Create sliceMetric and check if metric exist and update existing one or create new one measurement: %+v\n", meas)
52 //Create sliceMetric and check if metric exist and update existing one or create new one
53 if _, err := handler.data.AddOrUpdateMetric(meas); err != nil {
54 log.Error("Metric could not be added ", err)
62 func getVesMessages(r io.ReadCloser) *[]string {
64 body, err := ioutil.ReadAll(r)
69 err = json.Unmarshal(body, &messages)
77 func getStdMessages(messageStrings *[]string) []messages.StdDefinedMessage {
78 stdMessages := make([]messages.StdDefinedMessage, 0, len(*messageStrings))
79 for _, msgString := range *messageStrings {
80 var message messages.StdDefinedMessage
81 if err := json.Unmarshal([]byte(msgString), &message); err == nil {
82 stdMessages = append(stdMessages, message)