add snapshots list api
This commit is contained in:
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user