You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.3 KiB

package mock
import (
"context"
"fmt"
"tera-clone/services/tera-api/internal/alarmdelivery"
)
func (s *Store) LogStorageStatus(ctx context.Context) (map[string]any, error) {
if s.logJournal == nil {
return nil, fmt.Errorf("log storage unavailable")
}
snapshot, err := s.logJournal.Snapshot()
if err != nil {
return nil, err
}
retention, err := s.LogRetention(ctx)
if err != nil {
return nil, err
}
return map[string]any{"storage": snapshot, "retention": retention, "usage_percent": protectedLogUsagePercent(snapshot), "warning": protectedLogUsagePercent(snapshot) >= retention.ProtectedUsageWarningPct}, nil
}
func (s *Store) rememberSyslog(result alarmdelivery.Result, err error) {
s.mu.Lock()
defer s.mu.Unlock()
s.lastSyslogResult = result
s.lastSyslogError = ""
if err != nil {
s.lastSyslogError = err.Error()
}
}
func (s *Store) RemoteSyslogStatus(ctx context.Context) (map[string]any, error) {
s.mu.Lock()
result, lastError, enabled := s.lastSyslogResult, s.lastSyslogError, s.runningSyslog.Enabled
s.mu.Unlock()
if result.DeliveryID != "" {
latest, err := s.alarmDeliveryController.Status(ctx, result.DeliveryID)
if err != nil {
lastError = err.Error()
} else {
result = latest
}
}
return map[string]any{"enabled": enabled, "delivery": result, "error": lastError, "observed": result.DeliveryID != "" || lastError != ""}, nil
}