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  }