in server/src/main/scala/com/twitter/server/view/EndpointRegistryView.scala [20:61]
def render(dtabEntries: Map[Dtab, Map[String, Addr]]): String =
s"""
<div class="row">
<div class="col-md-12">
<a name="endpoints"></a>
<h3>Endpoints</h3>
<ul>
${(for ((dtab, observations) <- dtabEntries) yield {
s"""
<li>Dtab<br/>
<div>${renderDtab(dtab)}</div>
<div>Resolved Endpoints<br/>
<ul>
${(for ((path, addr) <- observations) yield {
s"""<li>Path: ${path}<br/>""" +
(addr match {
case Addr.Bound(endpoints, metadata) =>
val weight: Double = metadata.get(AddrWeightKey) match {
case Some(w: Double) => w
case Some(failed) =>
// Namer records weights as Doubles, so this should never happen.
-1.0
case None => 1.0
}
s"""Weight: ${weight}<br/>
Endpoints:<br/>
<ul>
${(for (endpoint <- endpoints) yield {
s"""<li>${endpoint}</li>"""
}).mkString("\n")}
</ul>
</li>"""
case Addr.Failed(why) =>
s"""Endpoint Resolution Failed: ${why}</li>"""
case _ =>
s"""Unbound Addr: ${addr}</li>"""
})
}).mkString("\n")}
</ul>
</div>
</li>"""
}).mkString("\n")}