sync from Azure to LF
[ric-plt/e2mgr.git] / E2Manager / managers / ran_status_change_manager.go
1 package managers
2
3 import (
4         "e2mgr/enums"
5         "e2mgr/logger"
6         "e2mgr/models"
7         "e2mgr/services/rmrsender"
8         "encoding/json"
9         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
10 )
11
12 type RanStatusChangeManager struct {
13         logger    *logger.Logger
14         rmrSender *rmrsender.RmrSender
15 }
16
17 func NewRanStatusChangeManager(logger *logger.Logger, rmrSender *rmrsender.RmrSender) *RanStatusChangeManager {
18         return &RanStatusChangeManager{
19                 logger:    logger,
20                 rmrSender: rmrSender,
21         }
22 }
23
24 type IRanStatusChangeManager interface {
25         Execute(msgType int, msgDirection enums.MessageDirection, nodebInfo *entities.NodebInfo) error
26 }
27
28 func (m *RanStatusChangeManager) Execute(msgType int, msgDirection enums.MessageDirection, nodebInfo *entities.NodebInfo) error {
29
30         resourceStatusPayload := models.NewResourceStatusPayload(nodebInfo.NodeType, msgDirection)
31         resourceStatusJson, err := json.Marshal(resourceStatusPayload)
32
33         if err != nil {
34                 m.logger.Errorf("#RanStatusChangeManager.Execute - RAN name: %s - Error marshaling resource status payload: %v", nodebInfo.RanName, err)
35                 return err
36         }
37
38         rmrMessage := models.NewRmrMessage(msgType, nodebInfo.RanName, resourceStatusJson)
39         return m.rmrSender.Send(rmrMessage)
40 }