add snapshots list api
This commit is contained in:
parent
05054be795
commit
a1ba422429
18
api.go
18
api.go
@ -50,6 +50,24 @@ func ApiSnapshotDel(c *gin.Context) {
|
||||
}
|
||||
|
||||
func ApiSnapshotList(c *gin.Context) {
|
||||
if app, ok := cfg.apps[c.Param("app")]; ok {
|
||||
if snapshots, err := app.Snapshots(); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": "error",
|
||||
"error": err,
|
||||
})
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "done",
|
||||
"snapshots": snapshots,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": "error",
|
||||
"error": "no app found",
|
||||
})
|
||||
}
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": "error",
|
||||
"error": "not implemented",
|
||||
|
||||
78
app.go
78
app.go
@ -503,7 +503,7 @@ func (a *App) Transfer() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) Boxes() []*Box {
|
||||
func (a *App) AllBoxes() []*Box {
|
||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||
|
||||
@ -534,6 +534,33 @@ func (a *App) Boxes() []*Box {
|
||||
return bx
|
||||
}
|
||||
|
||||
func (a *App) SourceBoxes() []*Box {
|
||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||
|
||||
bm := make(map[string]struct{})
|
||||
|
||||
for _, s := range a.sources {
|
||||
bm[s.Box()] = struct{}{}
|
||||
}
|
||||
|
||||
for _, b := range a.before {
|
||||
bm[b.Box()] = struct{}{}
|
||||
}
|
||||
|
||||
for _, af := range a.after {
|
||||
bm[af.Box()] = struct{}{}
|
||||
}
|
||||
|
||||
bx := make([]*Box, 0)
|
||||
|
||||
for n := range bm {
|
||||
bx = append(bx, cfg.box[n])
|
||||
}
|
||||
|
||||
return bx
|
||||
}
|
||||
|
||||
func (a *App) RunStandaloneTime(now time.Time) error {
|
||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||
@ -548,7 +575,7 @@ func (a *App) RunStandaloneTime(now time.Time) error {
|
||||
cfgRun = true
|
||||
defer func() { cfgRun = false }()
|
||||
|
||||
boxes := a.Boxes()
|
||||
boxes := a.AllBoxes()
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
@ -593,7 +620,7 @@ func (a *App) RunStandaloneSchedule(name string) error {
|
||||
cfgRun = true
|
||||
defer func() { cfgRun = false }()
|
||||
|
||||
boxes := a.Boxes()
|
||||
boxes := a.AllBoxes()
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
@ -614,3 +641,48 @@ func (a *App) RunStandaloneSchedule(name string) error {
|
||||
|
||||
return a.RunSchedule(name, time.Now())
|
||||
}
|
||||
|
||||
func (a *App) Snapshots() ([]string, error) {
|
||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||
|
||||
CfgLock()
|
||||
defer CfgUnlock()
|
||||
|
||||
cfgRun = true
|
||||
defer func() { cfgRun = false }()
|
||||
|
||||
boxes := a.SourceBoxes()
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
// Open boxes
|
||||
for _, b := range boxes {
|
||||
wg.Add(1)
|
||||
go func(box *Box) {
|
||||
defer wg.Done()
|
||||
if err := box.Open(); err != nil {
|
||||
log.WithFields(log.Fields{"name": box.name, "call": "Open", "error": err}).Errorf("")
|
||||
return
|
||||
}
|
||||
}(b)
|
||||
defer b.Close()
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
|
||||
names := make([]string, 0)
|
||||
|
||||
for _, src := range a.sources {
|
||||
if snapshots, err := src.ValidSnapshots(); err != nil {
|
||||
log.WithFields(log.Fields{"call": "ValidSnapshots", "attr": src, "error": err}).Errorf("")
|
||||
return names, err
|
||||
} else {
|
||||
for _, snapshot := range snapshots {
|
||||
names = append(names, snapshot.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return names, nil
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Code generated by version.sh (@generated) DO NOT EDIT.
|
||||
package main
|
||||
var githash = "73f9551"
|
||||
var githash = "05054be"
|
||||
var branch = "master"
|
||||
var buildstamp = "2025-10-19_19:40:05"
|
||||
var commits = "115"
|
||||
var version = "73f9551-b115 - 2025-10-19_19:40:05"
|
||||
var buildstamp = "2025-10-26_09:32:26"
|
||||
var commits = "116"
|
||||
var version = "05054be-b116 - 2025-10-26_09:32:26"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user