{{!
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>Registration</th>
    </tr></thead>
    <tbody>
    {{#masters}}
      <tr>
          <td>{{#target}}<a href="{{.}}">{{/target}}{{uuid}}{{#target}}</a>{{/target}}</td>
          <td>{{role}}</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}}
