code: func InstallHandlers(r *router.Router, base router.MiddlewareChain, srv crimson.CrimsonServer, tmplPath string) {
  	m := base.Extend(func(c *router.Context, next router.Handler) {
  		c.Context = context.WithValue(c.Context, &serverKey, srv)
  		next(c)
  	})
  	m = m.Extend(
  		templates.WithTemplates(prepareTemplates(tmplPath)),
  		auth.Authenticate(gaeserver.UsersAPIAuthMethod{}),
  	)
  	r.GET("/", m, indexPage)
  	r.GET("/datacenters", m, datacentersPage)
  	r.GET("/dracs", m, dracsPage)
  	r.GET("/hosts", m, hostsPage)
  	r.GET("/kvms", m, kvmsPage)
  	r.GET("/machines", m, machinesPage)
  	r.GET("/nics", m, nicsPage)
  	r.GET("/oses", m, osesPage)
  	r.GET("/platforms", m, platformsPage)
  	r.GET("/racks", m, racksPage)
  	r.GET("/switches", m, switchesPage)
  	r.GET("/vlans", m, vlansPage)
  	r.GET("/vms", m, vmsPage)
  }
docs: // InstallHandlers adds HTTP handlers that render HTML pages.