From 1a83db0b531ffcce914f555ca6ef00e4c15ccde6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu> Date: Thu, 26 Jan 2017 09:52:17 +0100 Subject: [PATCH] Manager: added -cleanslate CLI argument --- .../src/flamenco-manager/flamenco/db.go | 23 +++++++++++++++++++ .../src/flamenco-manager/main.go | 17 ++++++++++---- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/db.go b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/db.go index 24fffb91..6dcea7b4 100644 --- a/packages/flamenco-manager-go/src/flamenco-manager/flamenco/db.go +++ b/packages/flamenco-manager-go/src/flamenco-manager/flamenco/db.go @@ -1,6 +1,10 @@ package flamenco import ( + "bufio" + "fmt" + "os" + log "github.com/Sirupsen/logrus" mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" @@ -98,3 +102,22 @@ func SaveSettings(db *mgo.Database, settings *SettingsInMongo) { log.Errorf("db.SaveSettings: Unable to save settings: ", err) } } + +/* Erases all tasks in the flamenco_tasks collection. */ +func CleanSlate(db *mgo.Database) { + fmt.Println("") + fmt.Println("Performing Clean Slate operation, this will erase all tasks from the local DB.") + fmt.Println("After performing the Clean Slate, Flamenco-Manager will shut down.") + fmt.Println("Press [ENTER] to continue, [Ctrl+C] to abort.") + bufio.NewReader(os.Stdin).ReadLine() + + info, err := db.C("flamenco_tasks").RemoveAll(bson.M{}) + if err != nil { + log.WithError(err).Panic("unable to erase all tasks") + } + log.Warningf("Erased %d tasks", info.Removed) + + settings := GetSettings(db) + settings.DepsgraphLastModified = nil + SaveSettings(db, settings) +} diff --git a/packages/flamenco-manager-go/src/flamenco-manager/main.go b/packages/flamenco-manager-go/src/flamenco-manager/main.go index 3858dbbc..b64408fd 100644 --- a/packages/flamenco-manager-go/src/flamenco-manager/main.go +++ b/packages/flamenco-manager-go/src/flamenco-manager/main.go @@ -47,7 +47,7 @@ func http_schedule_task(w http.ResponseWriter, r *auth.AuthenticatedRequest) { func http_kick(w http.ResponseWriter, r *http.Request) { upstream.KickDownloader(false) - w.WriteHeader(204) + fmt.Fprintln(w, "Kicked task downloader") } func http_task_update(w http.ResponseWriter, r *auth.AuthenticatedRequest) { @@ -120,15 +120,17 @@ func shutdown(signum os.Signal) { } var cliArgs struct { - verbose bool - debug bool - jsonLog bool + verbose bool + debug bool + jsonLog bool + cleanSlate bool } func parseCliArgs() { flag.BoolVar(&cliArgs.verbose, "verbose", false, "Enable info-level logging") flag.BoolVar(&cliArgs.debug, "debug", false, "Enable debug-level logging") flag.BoolVar(&cliArgs.jsonLog, "json", false, "Log in JSON format") + flag.BoolVar(&cliArgs.cleanSlate, "cleanslate", false, "Start with a clean slate; erases all tasks from the local MongoDB") flag.Parse() } @@ -178,6 +180,13 @@ func main() { log.Info("Listening at :", config.Listen) session = flamenco.MongoSession(&config) + + if cliArgs.cleanSlate { + flamenco.CleanSlate(session.DB("")) + log.Warning("Shutting down after performing clean slate") + return + } + upstream = flamenco.ConnectUpstream(&config, session) task_scheduler = flamenco.CreateTaskScheduler(&config, upstream, session) task_update_pusher = flamenco.CreateTaskUpdatePusher(&config, upstream, session) -- GitLab