Shares of other services and RepoISO integration
build / build (push) Successful in 1m43s

- include SMB drop-ins from /etc/samba/smb.conf.d into the generated smb.conf
- keep smbd/nfs-server running while other services (/etc/exports.d, drop-ins) share,
  instead of disabling them when nasmon has no shares of its own
- list those shares read-only on /shares
- settings: RepoISO URL; poll its /api/integration/status, dashboard card, menu link,
  alerts for portal down, stale worker, failed jobs, unmounted publications

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 15:06:17 +03:00
co-authored by Claude Opus 5.5
parent 661a862f8d
commit 30dbb00dd1
22 changed files with 656 additions and 19 deletions
+9 -1
View File
@@ -54,6 +54,7 @@ type Status struct {
NextSmartCheck time.Time `json:"next_smart_check"`
SmartRunning bool `json:"smart_running"`
LastMailErr string `json:"last_mail_err,omitempty"`
RepoISO *collect.RepoISO `json:"repoiso,omitempty"`
}
type Scheduler struct {
@@ -243,6 +244,11 @@ func (s *Scheduler) collectStorage() {
root, _ := collect.ReadFS("/")
alerts, _ := s.st.ActiveAlerts()
services := collect.ReadShareServices()
var repoiso *collect.RepoISO
if url := s.cfg.Get().Integrations.RepoISOURL; url != "" {
r := collect.FetchRepoISO(url)
repoiso = &r
}
s.mu.Lock()
defer s.mu.Unlock()
@@ -264,6 +270,7 @@ func (s *Scheduler) collectStorage() {
s.status.RootFS = root
s.status.Alerts = alerts
s.status.Services = services
s.status.RepoISO = repoiso
}
// buildViews merges lsblk disks with cached SMART data; caller holds s.mu.
@@ -419,7 +426,8 @@ func (s *Scheduler) evaluate() {
Disks: nil, Pools: st.Pools, PoolsOK: st.PoolsErr == "",
CPUTemp: st.CPUTemp, HasCPU: st.HasCPUTemp,
RootFS: st.RootFS, RootOK: st.RootFS.Total > 0,
Prev: map[string]*collect.Smart{},
Prev: map[string]*collect.Smart{},
RepoISO: st.RepoISO,
}
for _, v := range st.Disks {
in.Disks = append(in.Disks, v.Disk)