X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmanagers%2Fe2t_instances_manager.go;h=74f6a5188345eef4657762594783d3955853ae84;hb=a96d143507d5c3366188e8c96076c552f25ef7ac;hp=fb59f2f7007057aea5a049d28bb1c227f064f4cb;hpb=fba870af318f9c7061fb53bf5ae398f600069b6e;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/e2t_instances_manager.go b/E2Manager/managers/e2t_instances_manager.go index fb59f2f..74f6a51 100644 --- a/E2Manager/managers/e2t_instances_manager.go +++ b/E2Manager/managers/e2t_instances_manager.go @@ -43,6 +43,7 @@ type IE2TInstancesManager interface { SelectE2TInstance() (string, error) AssociateRan(ranName string, e2tAddress string) error DissociateRan(ranName string, e2tAddress string) error + ActivateE2TInstance(e2tInstance *entities.E2TInstance) error ResetKeepAliveTimestamp(e2tAddress string) error } @@ -78,8 +79,10 @@ func (m *E2TInstancesManager) GetE2TInstancesNoLogs() ([]*entities.E2TInstance, if !ok { m.logger.Errorf("#E2TInstancesManager.GetE2TInstancesNoLogs - Failed retrieving E2T addresses. error: %s", err) + return nil, e2managererrors.NewRnibDbError() } - return nil, err + + return []*entities.E2TInstance{}, nil } if len(e2tAddresses) == 0 { @@ -104,8 +107,16 @@ func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) e2tAddresses, err := m.rnibDataService.GetE2TAddresses() if err != nil { - m.logger.Errorf("#E2TInstancesManager.GetE2TInstances - Failed retrieving E2T addresses. error: %s", err) - return nil, err + + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.GetE2TInstances - Failed retrieving E2T addresses. error: %s", err) + return nil, e2managererrors.NewRnibDbError() + } + + m.logger.Infof("#E2TInstancesManager.GetE2TInstances - Empty E2T addresses list") + return []*entities.E2TInstance{}, nil } if len(e2tAddresses) == 0 { @@ -117,7 +128,7 @@ func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) if err != nil { m.logger.Errorf("#E2TInstancesManager.GetE2TInstances - Failed retrieving E2T instances list. error: %s", err) - return e2tInstances, err + return e2tInstances, e2managererrors.NewRnibDbError() } if len(e2tInstances) == 0 { @@ -128,6 +139,38 @@ func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) return e2tInstances, nil } +func (m *E2TInstancesManager) ResetKeepAliveTimestampsForAllE2TInstances() { + + e2tInstances, err := m.GetE2TInstances() + + if err != nil { + m.logger.Errorf("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - Couldn't reset timestamps due to a DB error") + return + } + + if len(e2tInstances) == 0 { + m.logger.Infof("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - No instances, ignoring reset") + return + } + + for _, v := range e2tInstances { + + if v.State != entities.Active { + continue + } + + v.KeepAliveTimestamp = time.Now().UnixNano() + + err := m.rnibDataService.SaveE2TInstance(v) + + if err != nil { + m.logger.Errorf("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - E2T address: %s - failed resetting e2t instance keep alive timestamp. error: %s", v.Address, err) + } + } + + m.logger.Infof("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - Done with reset") +} + func findActiveE2TInstanceWithMinimumAssociatedRans(e2tInstances []*entities.E2TInstance) *entities.E2TInstance { var minInstance *entities.E2TInstance minAssociatedRanCount := math.MaxInt32 @@ -155,7 +198,6 @@ func (m *E2TInstancesManager) AddE2TInstance(e2tAddress string) error { return err } - e2tAddresses, err := m.rnibDataService.GetE2TAddresses() if err != nil { @@ -223,7 +265,7 @@ func (m *E2TInstancesManager) SelectE2TInstance() (string, error) { e2tInstances, err := m.GetE2TInstances() if err != nil { - return "", e2managererrors.NewRnibDbError() + return "", err } if len(e2tInstances) == 0 { @@ -267,6 +309,26 @@ func (m *E2TInstancesManager) AssociateRan(ranName string, e2tAddress string) er return nil } +func (h E2TInstancesManager) ActivateE2TInstance(e2tInstance *entities.E2TInstance) error{ + + if e2tInstance == nil { + h.logger.Errorf("#E2TInstancesManager.ActivateE2TInstance - e2tInstance empty") + return e2managererrors.NewInternalError() + } + + h.logger.Infof("#E2TInstancesManager.ActivateE2TInstance - E2T Address: %s - activate E2T instance", e2tInstance.Address) + + e2tInstance.State = entities.Active + e2tInstance.KeepAliveTimestamp = time.Now().UnixNano() + + err := h.rnibDataService.SaveE2TInstance(e2tInstance) + if err != nil { + h.logger.Errorf("#E2TInstancesManager.ActivateE2TInstance - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tInstance.Address, err) + return err + } + return nil +} + func (m *E2TInstancesManager) ResetKeepAliveTimestamp(e2tAddress string) error { m.mux.Lock() @@ -294,4 +356,4 @@ func (m *E2TInstancesManager) ResetKeepAliveTimestamp(e2tAddress string) error { } return nil -} \ No newline at end of file +}