Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 1 | <!DOCTYPE html> |
| 2 | <html lang="en"> |
| 3 | <head> |
| 4 | <meta charset="UTF-8"> |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 5 | <title>Nodes and Networks report</title> |
| 6 | {% include 'common_styles.j2' %} |
| 7 | {% include 'common_scripts.j2' %} |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 8 | <style> |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 9 | table.cluster_nodes { |
| 10 | width: 90%; |
| 11 | margin-left: 5%; |
| 12 | margin-right: 5%; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 13 | } |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 14 | |
| 15 | /* Node rows*/ |
| 16 | .node { |
| 17 | display: inline-block; |
| 18 | background-color: white; |
| 19 | } |
| 20 | |
| 21 | tr.node > td { |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 22 | display: block; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 23 | float: left; |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 24 | padding: 1px; |
| 25 | padding-left: 5px; |
| 26 | padding-right: 5px; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 27 | color: black; |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 28 | background-color: #A1BbA1; |
| 29 | text-align: center; |
| 30 | margin: 2px; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 31 | } |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 32 | |
| 33 | .meters { |
| 34 | display: inline-block; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 35 | } |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 36 | |
| 37 | td.meters > .meter { |
| 38 | display: block; |
| 39 | float: left; |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 40 | } |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 41 | </style> |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 42 | </head> |
| 43 | <body onload="init()"> |
| 44 | |
Alex | 4148552 | 2019-04-12 17:26:18 -0500 | [diff] [blame] | 45 | <div class="header"> |
| 46 | <div class="label">OpenStack release:</div> |
| 47 | <div class="text">{{ openstack_release }}</div> |
| 48 | <div class="label">MCP Version:</div> |
| 49 | <div class="text">{{ mcp_release }}</div> |
| 50 | <div class="label date">generated on: {{ gen_date }}</div> |
| 51 | </div> |
| 52 | |
| 53 | <div class="bar"> |
| 54 | <button class="bar-item" onclick="openBar(event, 'nodes')">Nodes</button> |
| 55 | <button class="bar-item" onclick="openBar(event, 'networks')">Networks</button> |
| 56 | <button class="bar-item" onclick="openBar(event, 'services')">Other</button> |
| 57 | </div> |
| 58 | |
| 59 | {% macro nodes_page(nodes, id_label) %} |
| 60 | <div id="{{ id_label }}" class="barcontent"> |
| 61 | <h5>{{ caller() }}</h5> |
| 62 | <hr> |
| 63 | <table class="cluster_nodes"> |
| 64 | {% for node in nodes.keys() | sort %} |
| 65 | {% set _ndat = nodes[node] %} |
| 66 | <tr class="node virt"> |
| 67 | <td class="status">{{ _ndat['status'] }}</td> |
| 68 | <td class="name">{{ node }}</td> |
| 69 | <td class="role">{{ _ndat['role'] }}</td> |
| 70 | <td class="vendor">QEMU</td> |
| 71 | <td class="meter cpu">vCPU: 12</td> |
| 72 | <td class="meter ram">RAM: 500GB</td> |
| 73 | <td class="meter disk">VDA: 150/140/135</td> |
| 74 | </tr> |
| 75 | {% endfor %} |
| 76 | </table> |
| 77 | <hr> |
| 78 | </div> |
| 79 | {% endmacro %} |
| 80 | |
| 81 | {% macro networks_page(networks, id_label) %} |
| 82 | <div id="{{ id_label }}" class="barcontent"> |
| 83 | <h5>{{ caller() }}</h5> |
| 84 | <hr> |
| 85 | <table class="networks"> |
| 86 | <tr class="subnet">192.168.10.0/24</tr> |
| 87 | <tr class="net collapsable"> |
| 88 | <td class="status">UP</td> |
| 89 | <td class="name">cfg01.internal.net</td> |
| 90 | <td class="ip">192.168.10.11</td> |
| 91 | <td class="param">1500</td> |
| 92 | </tr> |
| 93 | </table> |
| 94 | <hr> |
| 95 | </div> |
| 96 | {% endmacro %} |
| 97 | |
| 98 | {% macro services_page(services, id_label) %} |
| 99 | <div id="{{ id_label }}" class="barcontent"> |
| 100 | <h5>{{ caller() }}</h5> |
| 101 | <hr> |
| 102 | </div> |
| 103 | {% endmacro %} |
| 104 | |
| 105 | <!-- Cluster nodes page --> |
| 106 | {% call nodes_page(nodes, "nodes") %} |
| 107 | Cluster nodes status and simple meterings |
| 108 | {% endcall %} |
| 109 | |
| 110 | <!-- Cluster nodes page --> |
| 111 | {% call networks_page(networks, "networks") %} |
| 112 | Networks in the cluster |
| 113 | {% endcall %} |
| 114 | |
| 115 | <!-- Cluster nodes page --> |
| 116 | {% call services_page(services, "services") %} |
| 117 | Services status in the cluster |
| 118 | {% endcall %} |
| 119 | |
Alex Savatieiev | 9b2f651 | 2019-02-20 18:05:00 -0600 | [diff] [blame] | 120 | </body> |
| 121 | </html> |