X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fmanagers%2Fe2t_instances_manager.go;h=1e129430a7fba5feced5d27c5b3273097b4aea2d;hb=63249264955a37429a64ebfec7028c6a487bdf1e;hp=4f4017d542c7006b69ce6b0a8b67e01fe913db87;hpb=697bea2f66010c1c9bb4c3bafa41b3d0ca961291;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/e2t_instances_manager.go b/E2Manager/managers/e2t_instances_manager.go index 4f4017d..1e12943 100644 --- a/E2Manager/managers/e2t_instances_manager.go +++ b/E2Manager/managers/e2t_instances_manager.go @@ -38,6 +38,7 @@ type E2TInstancesManager struct { } type IE2TInstancesManager interface { + GetE2TAddresses() ([]string, error) GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) GetE2TInstances() ([]*entities.E2TInstance, error) GetE2TInstancesNoLogs() ([]*entities.E2TInstance, error) @@ -48,6 +49,7 @@ type IE2TInstancesManager interface { RemoveRanFromInstance(ranName string, e2tAddress string) error ActivateE2TInstance(e2tInstance *entities.E2TInstance) error ResetKeepAliveTimestamp(e2tAddress string) error + ClearRansOfAllE2TInstances() error } func NewE2TInstancesManager(rnibDataService services.RNibDataService, logger *logger.Logger) *E2TInstancesManager { @@ -106,7 +108,7 @@ func (m *E2TInstancesManager) GetE2TInstancesNoLogs() ([]*entities.E2TInstance, return e2tInstances, nil } -func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) { +func (m *E2TInstancesManager) GetE2TAddresses() ([]string, error) { e2tAddresses, err := m.rnibDataService.GetE2TAddresses() if err != nil { @@ -114,12 +116,20 @@ func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) _, ok := err.(*common.ResourceNotFoundError) if !ok { - m.logger.Errorf("#E2TInstancesManager.GetE2TInstances - Failed retrieving E2T addresses. error: %s", err) + m.logger.Errorf("#E2TInstancesManager.GetE2TAddresses - Failed retrieving E2T addresses. error: %s", err) return nil, e2managererrors.NewRnibDbError() } - m.logger.Infof("#E2TInstancesManager.GetE2TInstances - Empty E2T addresses list") - return []*entities.E2TInstance{}, nil + } + + return e2tAddresses, nil +} + +func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) { + e2tAddresses, err := m.GetE2TAddresses() + + if err != nil { + return nil, e2managererrors.NewRnibDbError() } if len(e2tAddresses) == 0 { @@ -235,7 +245,7 @@ func (m *E2TInstancesManager) RemoveRanFromInstance(ranName string, e2tAddress s if err != nil { m.logger.Errorf("#E2TInstancesManager.RemoveRanFromInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) - return err + return e2managererrors.NewRnibDbError() } i := 0 // output index @@ -253,7 +263,7 @@ func (m *E2TInstancesManager) RemoveRanFromInstance(ranName string, e2tAddress s if err != nil { m.logger.Errorf("#E2TInstancesManager.RemoveRanFromInstance - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err) - return err + return e2managererrors.NewRnibDbError() } m.logger.Infof("#E2TInstancesManager.RemoveRanFromInstance - successfully dissociated RAN %s from E2T %s", ranName, e2tInstance.Address) @@ -312,7 +322,7 @@ func (m *E2TInstancesManager) AddRanToInstance(ranName string, e2tAddress string return nil } -func (m E2TInstancesManager) ActivateE2TInstance(e2tInstance *entities.E2TInstance) error{ +func (m E2TInstancesManager) ActivateE2TInstance(e2tInstance *entities.E2TInstance) error { if e2tInstance == nil { m.logger.Errorf("#E2TInstancesManager.ActivateE2TInstance - e2tInstance empty") @@ -360,3 +370,31 @@ func (m *E2TInstancesManager) ResetKeepAliveTimestamp(e2tAddress string) error { return nil } + +func (m *E2TInstancesManager) ClearRansOfAllE2TInstances() error { + m.logger.Infof("#E2TInstancesManager.ClearRansOfAllE2TInstances - Going to clear associated RANs from E2T instances") + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstances, err := m.GetE2TInstances() + + if err != nil { + return err + } + + if len(e2tInstances) == 0 { + m.logger.Errorf("#E2TInstancesManager.ClearRansOfAllE2TInstances - No E2T instances to clear associated RANs from") + return nil + } + + for _, v := range e2tInstances { + v.AssociatedRanList = []string{} + err := m.rnibDataService.SaveE2TInstance(v) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.ClearRansOfAllE2TInstances - e2t address: %s - failed saving e2t instance. error: %s", v.Address, err) + } + } + + return nil +}