7 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
8 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
12 type E2TInstancesManager struct {
13 rnibDataService services.RNibDataService
18 type IE2TInstancesManager interface {
19 GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error)
20 AddE2TInstance(e2tAddress string) error
21 RemoveE2TInstance(e2tInstance *entities.E2TInstance) error
22 SelectE2TInstance(e2tInstance *entities.E2TInstance) (string, error)
23 AssociateRan(ranName string, e2tAddress string) error
24 DeassociateRan(ranName string, e2tAddress string) error
27 func NewE2TInstancesManager(rnibDataService services.RNibDataService, logger *logger.Logger) *E2TInstancesManager {
28 return &E2TInstancesManager{
29 rnibDataService: rnibDataService,
34 func (m *E2TInstancesManager) GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) {
35 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
38 m.logger.Errorf("#GetE2TInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
41 return e2tInstance, err
44 func (m *E2TInstancesManager) AddE2TInstance(e2tAddress string) error {
46 if len(e2tAddress) == 0 {
47 m.logger.Errorf("#AddE2TInstance - Empty E2T address received")
48 return fmt.Errorf("empty E2T address")
51 e2tInstance := entities.NewE2TInstance(e2tAddress)
52 err := m.rnibDataService.SaveE2TInstance(e2tInstance)
55 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed saving E2T instance. error: %s", e2tInstance.Address, err)
62 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
66 _, ok := err.(*common.ResourceNotFoundError)
69 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tInstance.Address, err)
74 e2tInstanceInfo := entities.NewE2TInstanceInfo(e2tInstance.Address)
75 e2tInfoList = append(e2tInfoList, e2tInstanceInfo)
77 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
80 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tInstance.Address, err)
84 m.logger.Infof("#AddE2TInstance - E2T Instance address: %s - successfully completed", e2tInstance.Address)
88 func (m *E2TInstancesManager) DeassociateRan(ranName string, e2tAddress string) error {
93 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
96 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tAddress, err)
100 isE2TInstanceFound := false
102 for _, e2tInfoInstance := range e2tInfoList {
103 if e2tInfoInstance.Address == e2tAddress {
104 e2tInfoInstance.AssociatedRanCount--
105 isE2TInstanceFound = true
110 if !isE2TInstanceFound {
111 m.logger.Warnf("#DeassociateRan - E2T Instance address: %s - E2TInstance not found in E2TInfoList.", e2tAddress)
115 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
118 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tAddress, err)
122 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
125 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
129 i := 0 // output index
130 for _, v := range e2tInstance.AssociatedRanList {
132 // copy and increment index
133 e2tInstance.AssociatedRanList[i] = v
138 e2tInstance.AssociatedRanList = e2tInstance.AssociatedRanList[:i]
140 err = m.rnibDataService.SaveE2TInstance(e2tInstance)
143 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err)
150 func (m *E2TInstancesManager) RemoveE2TInstance(e2tInstance *entities.E2TInstance) error {
153 func (m *E2TInstancesManager) SelectE2TInstance(e2tInstance *entities.E2TInstance) (string, error) {
157 func (m *E2TInstancesManager) AssociateRan(ranName string, e2tAddress string) error {
159 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
162 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tAddress, err)
166 for _, e2tInfoInstance := range e2tInfoList {
167 if e2tInfoInstance.Address == e2tAddress {
168 e2tInfoInstance.AssociatedRanCount++
173 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
176 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tAddress, err)
180 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
183 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
187 e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, ranName)
189 err = m.rnibDataService.SaveE2TInstance(e2tInstance)
192 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err)