+
+func (m E2TShutdownManager) clearNodebsAssociation(ranNamesToBeDissociated []string) error {
+ for _, ranName := range ranNamesToBeDissociated {
+ nodeb, err := m.rnibDataService.GetNodeb(ranName)
+ if err != nil {
+ m.logger.Warnf("#E2TShutdownManager.associateAndSetupNodebs - Failed to get nodeb %s from db.", ranName)
+ _, ok := err.(*common.ResourceNotFoundError)
+ if !ok {
+ continue
+ }
+ return err
+ }
+ nodeb.AssociatedE2TInstanceAddress = ""
+ nodeb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
+
+ err = m.rnibDataService.UpdateNodebInfo(nodeb)
+ if err != nil {
+ m.logger.Errorf("#E2TShutdownManager.associateAndSetupNodebs - Failed to save nodeb %s from db.", ranName)
+ return err
+ }
+ }
+ return nil
+}
+
+func (m E2TShutdownManager) markE2tInstanceToBeDeleted(e2tInstance *entities.E2TInstance) error {
+ e2tInstance.State = entities.ToBeDeleted
+ e2tInstance.DeletionTimestamp = time.Now().UnixNano()
+
+ return m.rnibDataService.SaveE2TInstance(e2tInstance)
+}
+
+func (m E2TShutdownManager) isE2tInstanceAlreadyBeingDeleted(e2tInstance *entities.E2TInstance) bool {
+ delta := time.Now().UnixNano() - e2tInstance.DeletionTimestamp
+ timestampNanosec := int64(time.Duration(m.config.E2TInstanceDeletionTimeoutMs) * time.Millisecond)
+
+ return e2tInstance.State == entities.ToBeDeleted && delta <= timestampNanosec
+}