github.com/Cloud-Foundations/Dominator@v0.3.4/imageunpacker/httpd/showStreamDashboard.go (about) 1 package httpd 2 3 import ( 4 "bufio" 5 "fmt" 6 "net/http" 7 8 "github.com/Cloud-Foundations/Dominator/lib/format" 9 "github.com/Cloud-Foundations/Dominator/lib/html" 10 ) 11 12 func (s state) showStreamDashboardHandler(w http.ResponseWriter, 13 req *http.Request) { 14 status := s.unpacker.GetStatus() 15 streamName := req.URL.RawQuery 16 stream, ok := status.ImageStreams[streamName] 17 if !ok { 18 http.NotFound(w, req) 19 return 20 } 21 writer := bufio.NewWriter(w) 22 defer writer.Flush() 23 fmt.Fprintf(writer, "<title>%s status page</title>\n", streamName) 24 fmt.Fprintln(writer, `<style> 25 table, th, td { 26 border-collapse: collapse; 27 } 28 </style>`) 29 fmt.Fprintln(writer, "<body>") 30 fmt.Fprintln(writer, "<center>") 31 fmt.Fprintf(writer, "<h1>%s status page</h1>\n", streamName) 32 fmt.Fprintln(writer, "</center>") 33 fmt.Fprintf(writer, "<b>Device Id:</b> %s<br>\n", stream.DeviceId) 34 if device, ok := status.Devices[stream.DeviceId]; ok { 35 fmt.Fprintf(writer, "<b>Device Name:</b> %s<br>\n", device.DeviceName) 36 fmt.Fprintf(writer, "<b>Device Size:</b> %s<br>\n", 37 format.FormatBytes(device.Size)) 38 } 39 fmt.Fprintf(writer, "<b>Status:</b> %s<br>\n", 40 s.getStreamStatusLink(streamName, stream, true)) 41 fmt.Fprintln(writer, "<br>") 42 s.unpacker.WriteStreamHtml(writer, streamName) 43 fmt.Fprintln(writer, "<hr>") 44 html.WriteFooter(writer) 45 fmt.Fprintln(writer, "</body>") 46 }