github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/imagebuilder/httpd/showBuildLog.go (about) 1 package httpd 2 3 import ( 4 "bufio" 5 "fmt" 6 "net/http" 7 ) 8 9 func (s state) showCurrentBuildLogHandler(w http.ResponseWriter, 10 req *http.Request) { 11 writer := bufio.NewWriter(w) 12 defer writer.Flush() 13 streamName := req.URL.RawQuery 14 fmt.Fprintf(writer, "<title>build log for stream %s</title>\n", streamName) 15 fmt.Fprintln(writer, `<head><meta http-equiv="refresh" content="2"></head>`) 16 fmt.Fprintln(writer, "<body>") 17 fmt.Fprintln(writer, "<h3>") 18 buildLog, err := s.builder.GetCurrentBuildLog(streamName) 19 if err != nil { 20 fmt.Fprintln(writer, err) 21 } else if buildLog == nil { 22 fmt.Fprintln(writer, "No build log") 23 } else { 24 fmt.Fprintf(writer, "In progress build log for stream: %s\n", 25 streamName) 26 fmt.Fprintln(writer, "</h3>") 27 fmt.Fprintln(writer, "<pre>") 28 writer.Write(buildLog) 29 fmt.Fprintln(writer, "</pre>") 30 } 31 fmt.Fprintln(writer, `<a name="bottom"></a>`) 32 fmt.Fprintln(writer, "</body>") 33 } 34 35 func (s state) showLastBuildLogHandler(w http.ResponseWriter, 36 req *http.Request) { 37 writer := bufio.NewWriter(w) 38 defer writer.Flush() 39 streamName := req.URL.RawQuery 40 fmt.Fprintf(writer, "<title>build log for stream %s</title>\n", streamName) 41 fmt.Fprintln(writer, "<body>") 42 fmt.Fprintln(writer, "<h3>") 43 buildLog, err := s.builder.GetLatestBuildLog(streamName) 44 if err != nil { 45 fmt.Fprintln(writer, err) 46 } else if buildLog == nil { 47 fmt.Fprintln(writer, "No build log") 48 } else { 49 fmt.Fprintf(writer, "Lastest build log for stream: %s\n", streamName) 50 fmt.Fprintln(writer, "</h3>") 51 fmt.Fprintln(writer, "<pre>") 52 writer.Write(buildLog) 53 fmt.Fprintln(writer, "</pre>") 54 } 55 fmt.Fprintln(writer, "</body>") 56 }