<!--
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.
-->
{{! Template for / }}
{{>www/common-header.tmpl}}
  {{?is_quiescing}}
  <div class="alert alert-info" role="alert">
  <h4>Shutdown in Progress</h4>
  <p>
  {{shutdown_status}}
  </div>
  {{/is_quiescing}}

  {{?impala_server_mode}}
  <h2>Impala Server Mode: {{?is_coordinator}}Coordinator{{?use_local_catalog}}
    (Local Catalog Mode){{/use_local_catalog}}{{/is_coordinator}}
    {{?is_executor}}Executor{{/is_executor}}</h2>
  {{/impala_server_mode}}

  <h2>Vers<span id="v">i</span>on</h2>
  <pre id="version_pre">{{version}}
Build Flags: {{#build_flags}}{{flag_name}}={{flag_value}}  {{/build_flags}}</pre>
<!-- The space after {{flag_value}} is necessary to add a space between each flag when
this page is rendered -->

  <h2>Process Start Time</h2>
  <pre>{{process_start_time}}</pre>

  <h2>Hardware Info</h2>
  <pre>{{cpu_info}} {{mem_info}} {{disk_info}}</pre>

  <h2>OS Info</h2>
  <pre>{{os_info}}</pre>

  <h2>Process Info</h2>
  <pre>{{process_state_info}}</pre>

  <h2>CGroup Info</h2>
  <pre>{{cgroup_info}}</pre>

{{>www/common-footer.tmpl}}
