| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Nodes and Networks report</title> |
| {% include 'common_styles.j2' %} |
| {% include 'common_scripts.j2' %} |
| <style> |
| table.cluster_nodes { |
| width: 90%; |
| margin-left: 5%; |
| margin-right: 5%; |
| } |
| |
| /* Node rows*/ |
| .node { |
| display: inline-block; |
| background-color: white; |
| } |
| |
| tr.node > td { |
| display: block; |
| float: left; |
| padding: 1px; |
| padding-left: 5px; |
| padding-right: 5px; |
| color: black; |
| background-color: #A1BbA1; |
| text-align: center; |
| margin: 2px; |
| } |
| |
| .meters { |
| display: inline-block; |
| } |
| |
| td.meters > .meter { |
| display: block; |
| float: left; |
| } |
| </style> |
| </head> |
| <body onload="init()"> |
| |
| <div class="header"> |
| <div class="label">OpenStack release:</div> |
| <div class="text">{{ openstack_release }}</div> |
| <div class="label">MCP Version:</div> |
| <div class="text">{{ mcp_release }}</div> |
| <div class="label date">generated on: {{ gen_date }}</div> |
| </div> |
| |
| <div class="bar"> |
| <button class="bar-item" onclick="openBar(event, 'nodes')">Nodes</button> |
| <button class="bar-item" onclick="openBar(event, 'networks')">Networks</button> |
| <button class="bar-item" onclick="openBar(event, 'services')">Other</button> |
| </div> |
| |
| {% macro nodes_page(nodes, id_label) %} |
| <div id="{{ id_label }}" class="barcontent"> |
| <h5>{{ caller() }}</h5> |
| <hr> |
| <table class="cluster_nodes"> |
| {% for node in nodes.keys() | sort %} |
| {% set _ndat = nodes[node] %} |
| <tr class="node virt"> |
| <td class="status">{{ _ndat['status'] }}</td> |
| <td class="name">{{ node }}</td> |
| <td class="role">{{ _ndat['role'] }}</td> |
| <td class="vendor">QEMU</td> |
| <td class="meter cpu">vCPU: 12</td> |
| <td class="meter ram">RAM: 500GB</td> |
| <td class="meter disk">VDA: 150/140/135</td> |
| </tr> |
| {% endfor %} |
| </table> |
| <hr> |
| </div> |
| {% endmacro %} |
| |
| {% macro networks_page(networks, id_label) %} |
| <div id="{{ id_label }}" class="barcontent"> |
| <h5>{{ caller() }}</h5> |
| <hr> |
| <table class="networks"> |
| <tr class="subnet">192.168.10.0/24</tr> |
| <tr class="net collapsable"> |
| <td class="status">UP</td> |
| <td class="name">cfg01.internal.net</td> |
| <td class="ip">192.168.10.11</td> |
| <td class="param">1500</td> |
| </tr> |
| </table> |
| <hr> |
| </div> |
| {% endmacro %} |
| |
| {% macro services_page(services, id_label) %} |
| <div id="{{ id_label }}" class="barcontent"> |
| <h5>{{ caller() }}</h5> |
| <hr> |
| </div> |
| {% endmacro %} |
| |
| <!-- Cluster nodes page --> |
| {% call nodes_page(nodes, "nodes") %} |
| Cluster nodes status and simple meterings |
| {% endcall %} |
| |
| <!-- Cluster nodes page --> |
| {% call networks_page(networks, "networks") %} |
| Networks in the cluster |
| {% endcall %} |
| |
| <!-- Cluster nodes page --> |
| {% call services_page(services, "services") %} |
| Services status in the cluster |
| {% endcall %} |
| |
| </body> |
| </html> |