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) {
|
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{
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
"message": "error",
|
"message": "error",
|
||||||
"error": "not implemented",
|
"error": "not implemented",
|
||||||
|
|||||||
78
app.go
78
app.go
@ -503,7 +503,7 @@ func (a *App) Transfer() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) Boxes() []*Box {
|
func (a *App) AllBoxes() []*Box {
|
||||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||||
|
|
||||||
@ -534,6 +534,33 @@ func (a *App) Boxes() []*Box {
|
|||||||
return bx
|
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 {
|
func (a *App) RunStandaloneTime(now time.Time) error {
|
||||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||||
@ -548,7 +575,7 @@ func (a *App) RunStandaloneTime(now time.Time) error {
|
|||||||
cfgRun = true
|
cfgRun = true
|
||||||
defer func() { cfgRun = false }()
|
defer func() { cfgRun = false }()
|
||||||
|
|
||||||
boxes := a.Boxes()
|
boxes := a.AllBoxes()
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
@ -593,7 +620,7 @@ func (a *App) RunStandaloneSchedule(name string) error {
|
|||||||
cfgRun = true
|
cfgRun = true
|
||||||
defer func() { cfgRun = false }()
|
defer func() { cfgRun = false }()
|
||||||
|
|
||||||
boxes := a.Boxes()
|
boxes := a.AllBoxes()
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
@ -614,3 +641,48 @@ func (a *App) RunStandaloneSchedule(name string) error {
|
|||||||
|
|
||||||
return a.RunSchedule(name, time.Now())
|
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.
|
// Code generated by version.sh (@generated) DO NOT EDIT.
|
||||||
package main
|
package main
|
||||||
var githash = "73f9551"
|
var githash = "05054be"
|
||||||
var branch = "master"
|
var branch = "master"
|
||||||
var buildstamp = "2025-10-19_19:40:05"
|
var buildstamp = "2025-10-26_09:32:26"
|
||||||
var commits = "115"
|
var commits = "116"
|
||||||
var version = "73f9551-b115 - 2025-10-19_19:40:05"
|
var version = "05054be-b116 - 2025-10-26_09:32:26"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user