6 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
7 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
11 type E2TInstancesManager struct {
12 rnibDataService services.RNibDataService
17 type IE2TInstancesManager interface {
18 GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error)
19 AddE2TInstance(e2tAddress string) error
20 RemoveE2TInstance(e2tInstance *entities.E2TInstance) error
21 SelectE2TInstance(e2tInstance *entities.E2TInstance) (string, error)
22 AssociateRan(ranName string, e2tAddress string) error
23 DeassociateRan(ranName string, e2tAddress string) error
26 func NewE2TInstancesManager(rnibDataService services.RNibDataService, logger *logger.Logger) *E2TInstancesManager {
27 return &E2TInstancesManager{
28 rnibDataService: rnibDataService,
33 func (m *E2TInstancesManager) GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) {
34 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
37 m.logger.Errorf("#GetE2TInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
40 return e2tInstance, err
43 func (m *E2TInstancesManager) AddE2TInstance(e2tAddress string) error {
44 e2tInstance := entities.NewE2TInstance(e2tAddress)
45 err := m.rnibDataService.SaveE2TInstance(e2tInstance)
48 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed saving E2T instance. error: %s", e2tInstance.Address, err)
55 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
59 _, ok := err.(*common.ResourceNotFoundError)
62 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tInstance.Address, err)
67 e2tInstanceInfo := entities.NewE2TInstanceInfo(e2tInstance.Address)
68 e2tInfoList = append(e2tInfoList, e2tInstanceInfo)
70 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
73 m.logger.Errorf("#AddE2TInstance - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tInstance.Address, err)
77 m.logger.Infof("#AddE2TInstance - E2T Instance address: %s - successfully completed", e2tInstance.Address)
81 func (m *E2TInstancesManager) DeassociateRan(ranName string, e2tAddress string) error {
86 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
89 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tAddress, err)
93 isE2TInstanceFound := false
95 for _, e2tInfoInstance := range e2tInfoList {
96 if e2tInfoInstance.Address == e2tAddress {
97 e2tInfoInstance.AssociatedRanCount--
98 isE2TInstanceFound = true
103 if !isE2TInstanceFound {
104 m.logger.Warnf("#DeassociateRan - E2T Instance address: %s - E2TInstance not found in E2TInfoList.", e2tAddress)
108 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
111 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tAddress, err)
115 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
118 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
122 i := 0 // output index
123 for _, v := range e2tInstance.AssociatedRanList {
125 // copy and increment index
126 e2tInstance.AssociatedRanList[i] = v
131 e2tInstance.AssociatedRanList = e2tInstance.AssociatedRanList[:i]
133 err = m.rnibDataService.SaveE2TInstance(e2tInstance)
136 m.logger.Errorf("#DeassociateRan - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err)
143 func (m *E2TInstancesManager) RemoveE2TInstance(e2tInstance *entities.E2TInstance) error {
146 func (m *E2TInstancesManager) SelectE2TInstance(e2tInstance *entities.E2TInstance) (string, error) {
150 func (m *E2TInstancesManager) AssociateRan(ranName string, e2tAddress string) error {
152 e2tInfoList, err := m.rnibDataService.GetE2TInfoList()
155 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed retrieving E2TInfoList. error: %s", e2tAddress, err)
159 for _, e2tInfoInstance := range e2tInfoList {
160 if e2tInfoInstance.Address == e2tAddress {
161 e2tInfoInstance.AssociatedRanCount++
166 err = m.rnibDataService.SaveE2TInfoList(e2tInfoList)
169 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed saving E2TInfoList. error: %s", e2tAddress, err)
173 e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress)
176 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err)
180 e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, ranName)
182 err = m.rnibDataService.SaveE2TInstance(e2tInstance)
185 m.logger.Errorf("#AssociateRan - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err)