blob: 9f0f5567355593056d950c6838e76ced9c94e639 [file] [log] [blame]
Alex Savatieiev9b2f6512019-02-20 18:05:00 -06001<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
Alex41485522019-04-12 17:26:18 -05005 <title>Nodes and Networks report</title>
6 {% include 'common_styles.j2' %}
7 {% include 'common_scripts.j2' %}
Alex Savatieiev9b2f6512019-02-20 18:05:00 -06008 <style>
Alex41485522019-04-12 17:26:18 -05009 table.cluster_nodes {
10 width: 90%;
11 margin-left: 5%;
12 margin-right: 5%;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060013 }
Alex41485522019-04-12 17:26:18 -050014
15 /* Node rows*/
16 .node {
17 display: inline-block;
18 background-color: white;
19 }
20
21 tr.node > td {
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060022 display: block;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060023 float: left;
Alex41485522019-04-12 17:26:18 -050024 padding: 1px;
25 padding-left: 5px;
26 padding-right: 5px;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060027 color: black;
Alex41485522019-04-12 17:26:18 -050028 background-color: #A1BbA1;
29 text-align: center;
30 margin: 2px;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060031 }
Alex41485522019-04-12 17:26:18 -050032
33 .meters {
34 display: inline-block;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060035 }
Alex41485522019-04-12 17:26:18 -050036
37 td.meters > .meter {
38 display: block;
39 float: left;
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060040 }
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060041 </style>
Alex Savatieiev9b2f6512019-02-20 18:05:00 -060042</head>
43<body onload="init()">
44
Alex41485522019-04-12 17:26:18 -050045<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 Savatieiev9b2f6512019-02-20 18:05:00 -0600120</body>
121</html>