[RICPLT-2787] Add new e2t controller and GetE2TInstances API
[ric-plt/e2mgr.git] / E2Manager / managers / e2t_instances_manager.go
index 2e36d61..74f6a51 100644 (file)
@@ -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 {
@@ -254,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 {
@@ -298,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()