X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fmanagers%2Fe2t_association_manager.go;h=9b0cadadb2b1d0b46b533164b0cd2b33d9312732;hb=63249264955a37429a64ebfec7028c6a487bdf1e;hp=3311e60d8a51707eaf2797f45caf836d0da6d90d;hpb=e597612ca39c11bb5b562b9e492e5340a618dba9;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/e2t_association_manager.go b/E2Manager/managers/e2t_association_manager.go index 3311e60..9b0cada 100644 --- a/E2Manager/managers/e2t_association_manager.go +++ b/E2Manager/managers/e2t_association_manager.go @@ -23,6 +23,7 @@ import ( "e2mgr/clients" "e2mgr/logger" "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" ) type E2TAssociationManager struct { @@ -41,7 +42,8 @@ func NewE2TAssociationManager(logger *logger.Logger, rnibDataService services.RN } } -func (m *E2TAssociationManager) AssociateRan(e2tAddress string, ranName string) error { +func (m *E2TAssociationManager) AssociateRan(e2tAddress string, nodebInfo *entities.NodebInfo) error { + ranName := nodebInfo.RanName m.logger.Infof("#E2TAssociationManager.AssociateRan - Associating RAN %s to E2T Instance address: %s", ranName, e2tAddress) err := m.rmClient.AssociateRanToE2TInstance(e2tAddress, ranName) @@ -50,16 +52,10 @@ func (m *E2TAssociationManager) AssociateRan(e2tAddress string, ranName string) return err } - nodebInfo, rnibErr := m.rnibDataService.GetNodeb(ranName) - - if rnibErr != nil { - m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed fetching RAN from rNib. Error: %s", ranName, rnibErr) - return rnibErr - } - nodebInfo.AssociatedE2TInstanceAddress = e2tAddress nodebInfo.ConnectionAttempts = 0 - rnibErr = m.rnibDataService.UpdateNodebInfo(nodebInfo) + + rnibErr := m.rnibDataService.UpdateNodebInfo(nodebInfo) if rnibErr != nil { m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed to update RAN.AssociatedE2TInstanceAddress in rNib. Error: %s", ranName, rnibErr) return rnibErr @@ -73,3 +69,34 @@ func (m *E2TAssociationManager) AssociateRan(e2tAddress string, ranName string) m.logger.Infof("#E2TAssociationManager.AssociateRan - successfully associated RAN %s with E2T %s", ranName, e2tAddress) return nil } + +func (m *E2TAssociationManager) DissociateRan(e2tAddress string, ranName string) error { + m.logger.Infof("#E2TAssociationManager.DissociateRan - Dissociating RAN %s from E2T Instance address: %s", ranName, e2tAddress) + + nodebInfo, rnibErr := m.rnibDataService.GetNodeb(ranName) + if rnibErr != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed fetching RAN from rNib. Error: %s", ranName, rnibErr) + return rnibErr + } + + nodebInfo.AssociatedE2TInstanceAddress = "" + rnibErr = m.rnibDataService.UpdateNodebInfo(nodebInfo) + if rnibErr != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed to update RAN.AssociatedE2TInstanceAddress in rNib. Error: %s", ranName, rnibErr) + return rnibErr + } + + err := m.e2tInstanceManager.RemoveRanFromInstance(ranName, e2tAddress) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed to remove RAN from E2T instance %s. Error: %s", ranName, e2tAddress, err) + return err + } + + err = m.rmClient.DissociateRanE2TInstance(e2tAddress, ranName) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RoutingManager failure: Failed to dissociate RAN %s from E2T %s. Error: %s", ranName, e2tAddress, err) + } else { + m.logger.Infof("#E2TAssociationManager.DissociateRan - successfully dissociated RAN %s from E2T %s", ranName, e2tAddress) + } + return nil +}