From 403e907b6d063ccf129f0f92a5b58c81cc80ac17 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 29 Jan 2019 00:42:04 -0800 Subject: [PATCH] Added artifacts/ dir Added /shutdown, /cancelshutdown and /rudeshutdown endpoints w/shutdown logic Signed-off-by: Russ Magee --- artifacts/README.md | 2 + bacillus.go | 108 ++++++++++++++++++++++++++++++++--- images/bacillus-lg.jpg | Bin 0 -> 33440 bytes images/bacillus-shutdown.jpg | Bin 0 -> 15561 bytes 4 files changed, 103 insertions(+), 7 deletions(-) create mode 100644 artifacts/README.md create mode 100644 images/bacillus-lg.jpg create mode 100644 images/bacillus-shutdown.jpg diff --git a/artifacts/README.md b/artifacts/README.md new file mode 100644 index 0000000..5863c36 --- /dev/null +++ b/artifacts/README.md @@ -0,0 +1,2 @@ +## Artifacts directory + diff --git a/bacillus.go b/bacillus.go index 4d142c6..7c09cac 100644 --- a/bacillus.go +++ b/bacillus.go @@ -29,10 +29,13 @@ const ( ) var ( - addrPort string - hookStd string - apiKey string - attachStdout bool + server *http.Server + addrPort string + hookStd string + apiKey string + attachStdout bool + shutdownModeActive bool + killSwitch chan bool //statUseUnicode bool indStyle string instCounter uint32 @@ -59,6 +62,9 @@ func getFavIcon() string { } func getBodyBgndHTMLFrag() string { + if shutdownModeActive { + return ` style='background: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0.8) 100%); background-image: url("/images/bacillus-shutdown.jpg"); background-size: cover;'` + } return ` style='background: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0.8) 100%); background-image: url("/images/bacillus.jpg"); background-size: cover;'` } @@ -342,6 +348,13 @@ func launchJobListener(mainCtx context.Context, jobTag, jobOpts string, jobEnv [ `) + if shutdownModeActive { + io.WriteString(w, fmt.Sprintf("
Server is in shutdown mode, come back later.
\n")) + io.WriteString(w, ` + + `) + return + } io.WriteString(w, fmt.Sprintf("
Triggered %s
\n", jobTag)) io.WriteString(w, ` @@ -669,7 +682,13 @@ func rootPageHandler(w http.ResponseWriter, r *http.Request) { .. that's about it. Happy Build Automating, DevOps-ing, or whatever it's called these days... - + + Oh, and in case you need to... + halt any new jobs for a graceful shutdown + cancel a planned shutdown + + +
Qui verifiers ratum efficiat? Non I.
`) io.WriteString(w, ` @@ -678,7 +697,61 @@ func rootPageHandler(w http.ResponseWriter, r *http.Request) { `) } +func cancelShutdownHandler(w http.ResponseWriter, r *http.Request) { + fmt.Println(r.URL) + shutdownModeActive = false + w.Header().Set("Content-type", "text/html") + io.WriteString(w, ` + + `+ + getFavIcon()+ + getGoBackHeaderJS("3000")+` + + + `) + io.WriteString(w, fmt.Sprintf("
Shutdown mode off.
\n")) + io.WriteString(w, ` + + `) +} + +func shutdownHandler(w http.ResponseWriter, r *http.Request) { + fmt.Println(r.URL) + shutdownModeActive = true + w.Header().Set("Content-type", "text/html") + io.WriteString(w, ` + + `+ + getFavIcon()+ + getGoBackHeaderJS("3000")+` + + + `) + io.WriteString(w, fmt.Sprintf("
Shutdown mode on. No new jobs can start.
\n")) + io.WriteString(w, ` + + `) +} + +func rudeShutdownHandler(w http.ResponseWriter, r *http.Request) { + fmt.Println(r.URL) + w.Header().Set("Content-type", "text/html") + io.WriteString(w, ` + + `+ + getFavIcon()+` + + + `) + io.WriteString(w, fmt.Sprintf("
.. so cold... so very, very cold..
\n")) + io.WriteString(w, ` + + `) + killSwitch <- true +} + func main() { + killSwitch = make(chan bool, 1) // ensure a single send can proceed unblocked var createRunlog bool flag.StringVar(&addrPort, "a", ":9990", "[addr]:port on which to listen") @@ -705,7 +778,7 @@ func main() { } log.SetOutput(logfile) - log.Printf("[bacillus %s startup] usage\n", appVer) + log.Printf("[bacillus %s startup]\n", appVer) log.Printf("[listening on %s, type %s]\n", addrPort, hookStd) cmdMap := make(map[string]string) @@ -783,9 +856,19 @@ func main() { // A single endpoint handles the 'live' job output http.HandleFunc("/"+jobHomeDir+"/", consoleHandler) + // Similarly, a single endpoint handles static full job output http.HandleFunc("/"+jobHomeDir+"/fullconsole/", fullConsoleHandler) + // Enter shutdown mode (stop launching new jobs) + http.HandleFunc("/shutdown", shutdownHandler) + + // Enter shutdown mode (stop launching new jobs) + http.HandleFunc("/cancelshutdown", cancelShutdownHandler) + + // Rude exit (regardless of running jobs) + http.HandleFunc("/rudeshutdown", rudeShutdownHandler) + // And finally, the root fallback to give help on defined endpoints. http.HandleFunc("/", rootPageHandler) @@ -793,5 +876,16 @@ func main() { // log.Fatal(http.ListenAndServe(":9991", http.FileServer(http.Dir(jobHomeDir)))) //}() - log.Fatal(http.ListenAndServe(addrPort, nil)) + // Rather than use http.ListenAndServe() we break out that func + // and retain the http.Server var so we can call Shutdown() or + // Close() if needed. + server = &http.Server{Addr: addrPort, Handler: nil} + go func() { + log.Fatal(server.ListenAndServe()) + }() + + // .. and wait for a rude shutdown if requested + k := <-killSwitch + fmt.Printf("Got rudeShutdown:%v\n", k) + server.Shutdown(nil) } diff --git a/images/bacillus-lg.jpg b/images/bacillus-lg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df4d8b2b34cc51738e8731fef879a9b977ead7a2 GIT binary patch literal 33440 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 literal 0 HcmV?d00001 diff --git a/images/bacillus-shutdown.jpg b/images/bacillus-shutdown.jpg new file mode 100644 index 0000000000000000000000000000000000000000..555ce6d73958d00b123d6e2ae9b1929c953ad872 GIT binary patch literal 15561 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 literal 0 HcmV?d00001