{{!
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
}}
{{#error}}
  <div class="text-error">{{.}}</div>
{{/error}}
{{#even_masters}}
  {{! TODO(wdberkeley): Un-actionable warning. Link to add/remove master docs once they exist. }}
  <div class="alert alert-danger" role="alert">WARNING: There are an even number of master peers.
    This provides no more fault tolerance than having one less master.
    In particular, 2 masters cannot tolerate the failure of a single master.
  </div>
{{/even_masters}}
{{^error}}
  <h2>Live Masters</h2>
  <table class='table table-striped'>
    <thead><tr>
      <th>UUID</th>
      <th>Role</th>
      <th>Start time</th>
      <th>Registration</th>
    </tr></thead>
    <tbody>
    {{#masters}}
      <tr>
          <td>{{#target}}<a href="{{.}}">{{/target}}{{uuid}}{{#target}}</a>{{/target}}</td>
          <td>{{role}}</td>
          <td>{{start_time}}</td>
          <td><pre><code>{{registration}}</code></pre></td>
      </tr>
    {{/masters}}
    </tbody>
  </table>
  {{^has_no_errors}}
  <h2>Errors</h2>
  <table class='table table-striped'>
    <thead><tr>
      <th>UUID</th>
      <th>Error</th>
    </tr></thead>
    <tbody>
    {{#errors}}
      <tr>
        <td>{{uuid}}</td>
        <td><pre><code>{{error}}</code></pre></td>
      </tr>
    {{/errors}}
    </tbody>
  </table>
  {{/has_no_errors}}
{{/error}}
