Skip to content

Commit 891df7c

Browse files
committedSep 5, 2024··
Support central view of release metrics
Signed-off-by: Prudhvi Godithi <pgodithi@amazon.com>
1 parent e7ae6c0 commit 891df7c

File tree

3 files changed

+337
-199
lines changed

3 files changed

+337
-199
lines changed
 

‎_data/top_nav.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,5 @@ items:
6767
url: https://playground.opensearch.org/
6868
- label: Performance Benchmarks
6969
url: /benchmarks/
70-
- label: Release Metrics
71-
url: /release-metrics/
70+
- label: Release Dashboard
71+
url: /release-dashboard/

‎release-dashboard/index.md

+335
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
---
2+
layout: fullwidth-with-breadcrumbs
3+
primary_title: 'OpenSearch Release Dashboard'
4+
title: 'OpenSearch Release Dashboard'
5+
breadcrumbs:
6+
icon: platform
7+
items:
8+
- title: The OpenSearch Platform
9+
url: '/platform/'
10+
- title: Release Dashboard
11+
url: '/release-dashboard/'
12+
omit_from_search: true
13+
14+
release_versions:
15+
- version: 2.17.0
16+
release_issue: 4908
17+
release_retro_issue: 4909
18+
- version: 2.16.0
19+
release_issue: 4771
20+
release_retro_issue: 4847
21+
22+
metrics_height_desktop: 2000
23+
metrics_height_mobile: 6000
24+
---
25+
26+
<style>
27+
body, html {
28+
margin: 0;
29+
padding: 0;
30+
width: 100%;
31+
height: 100%;
32+
display: flex;
33+
flex-direction: column;
34+
background-color: #fff;
35+
}
36+
h1 {
37+
text-align: center;
38+
margin: 5px 0;
39+
cursor: pointer;
40+
text-decoration: underline;
41+
}
42+
.dashboard-container {
43+
width: 100%;
44+
margin-bottom: 20px;
45+
overflow: hidden;
46+
}
47+
iframe {
48+
width: 100%;
49+
border: none;
50+
}
51+
@media only screen and (min-width: 768px) {
52+
iframe {
53+
height: {{ page.benchmark_height_desktop }}px;
54+
}
55+
}
56+
@media only screen and (max-width: 767px) {
57+
iframe {
58+
height: {{ page.benchmark_height_mobile }}px;
59+
}
60+
}
61+
.modal {
62+
display: none;
63+
position: fixed;
64+
z-index: 1000;
65+
left: 0;
66+
top: 0;
67+
width: 100%;
68+
height: 100%;
69+
overflow: hidden;
70+
background-color: rgba(0,0,0,0.5);
71+
justify-content: center;
72+
align-items: center;
73+
}
74+
.modal-content {
75+
position: relative;
76+
width: 100%;
77+
height: 100%;
78+
max-width: 1200px;
79+
max-height: 900px
80+
background-color: white;
81+
overflow: hidden;
82+
}
83+
.modal-header {
84+
padding: 16px;
85+
font-size: 20px;
86+
font-weight: bold;
87+
border-bottom: 1px solid #ddd;
88+
background-color: #f5f5f5;
89+
margin-bottom: 16px;
90+
}
91+
.close {
92+
position: absolute;
93+
right: 20px;
94+
top: 20px;
95+
color: #000;
96+
font-size: 28px;
97+
font-weight: bold;
98+
cursor: pointer;
99+
z-index: 2;
100+
}
101+
.close:hover,
102+
.close:focus {
103+
color: #555;
104+
text-decoration: none;
105+
cursor: pointer;
106+
}
107+
.modal-body {
108+
padding: 16px;
109+
height: calc(100% - 60px);
110+
overflow: auto;
111+
}
112+
.nav-index {
113+
margin: 5px;
114+
text-align: center;
115+
}
116+
.nav-index a {
117+
margin: 0 15px;
118+
text-decoration: none;
119+
color: #007bff;
120+
font-weight: bold;
121+
}
122+
.nav-index a:hover {
123+
text-decoration: underline;
124+
}
125+
.button {
126+
display: inline-block;
127+
padding: 10px 15px;
128+
font-size: 14px;
129+
color: #fff;
130+
background-color: #007bff;
131+
text-decoration: none;
132+
border-radius: 4px;
133+
margin-top: 10px;
134+
}
135+
.button:hover {
136+
background-color: #0056b3;
137+
}
138+
.version-selector {
139+
display: flex;
140+
flex-wrap: wrap;
141+
justify-content: center;
142+
margin-bottom: 20px;
143+
}
144+
.version-item {
145+
margin: 0 10px;
146+
padding: 10px 20px;
147+
border: 1px solid #007bff;
148+
border-radius: 4px;
149+
cursor: pointer;
150+
color: #007bff;
151+
font-weight: bold;
152+
text-align: center;
153+
user-select: none;
154+
}
155+
.version-item.selected {
156+
background-color: #007bff;
157+
color: #fff;
158+
}
159+
</style>
160+
161+
<p>
162+
Welcome to the OpenSearch Release Metrics page. As part of the metrics project initiative and with the goal of providing a central release dashboard, this page offers a comprehensive overview of the metrics and key indicators related to the ongoing OpenSearch releases. It provides a consolidated view of all release-related metrics, helping the OpenSearch community to track release progress and its activities effectively.
163+
<br><br>
164+
<a href="#metrics-dashboard">OpenSearch Release Metrics</a>: This dashboard provides a high-level overview of key repo health indicators and metrics related to the current OpenSearch release. It is designed to help release managers and the community monitor the release's progress and ensure that everything is on track.
165+
<br><br>
166+
<a href="#component-metrics-dashboard">OpenSearch Component Release Metrics</a>: This dashboard provides an overview of metrics related to specific OpenSearch components, enabling teams to track the release status of individual components through detailed component-level release metrics.
167+
<br><br>
168+
<a href="#test-results-dashboard">OpenSearch Release Build and Integration Test Results</a>: This dashboard focuses on build and integration test failures. It is a critical dashboard for component-level release owners, as it highlights build and integration test issues that need to be resolved to avoid delays or problems during the release process.
169+
</p>
170+
171+
<h2>Release Version</h2>
172+
<div id="version-selector" class="version-selector">
173+
{% for version in page.release_versions %}
174+
<div class="version-item {% if forloop.first %}selected{% endif %}" data-version="{{ version.version }}">{{ version.version }}</div>
175+
{% endfor %}
176+
</div>
177+
178+
<div id="release-info">
179+
<p id="release-issue"></p>
180+
<p id="release-retro-issue"></p>
181+
</div>
182+
183+
<div id="metrics-dashboard" class="dashboard-container">
184+
<h1 onclick="openModal('modal1')">OpenSearch Release Metrics</h1>
185+
<a id="metrics-dashboard-link" href="#" target="_blank" class="button">Direct Link to Metrics Dashboard</a>
186+
<iframe id="metrics-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe>
187+
</div>
188+
189+
<div id="component-metrics-dashboard" class="dashboard-container">
190+
<h1 onclick="openModal('modal3')">OpenSearch Component Release Metrics</h1>
191+
<a id="component-metrics-dashboard-link" href="#" target="_blank" class="button">Direct Link to Component Metrics Dashboard</a>
192+
<iframe id="component-metrics-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe>
193+
</div>
194+
195+
<div id="test-results-dashboard" class="dashboard-container">
196+
<h1 onclick="openModal('modal2')">OpenSearch Release Build and Integration Test Results</h1>
197+
<a id="test-results-dashboard-link" href="#" target="_blank" class="button">Direct Link to Test Results Dashboard</a>
198+
<iframe id="test-results-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe>
199+
</div>
200+
201+
202+
<div id="modal1" class="modal">
203+
<div class="modal-content">
204+
<div class="modal-header">
205+
<span class="close" onclick="closeModal('modal1')">&times;</span>
206+
OpenSearch Release Metrics
207+
</div>
208+
<div class="modal-body">
209+
<iframe id="modal1-iframe" width="100%" height="100%"></iframe>
210+
</div>
211+
</div>
212+
</div>
213+
214+
<div id="modal2" class="modal">
215+
<div class="modal-content">
216+
<div class="modal-header">
217+
<span class="close" onclick="closeModal('modal2')">&times;</span>
218+
OpenSearch Component Release Metrics
219+
</div>
220+
<div class="modal-body">
221+
<iframe id="modal2-iframe" width="100%" height="100%"></iframe>
222+
</div>
223+
</div>
224+
</div>
225+
226+
<div id="modal3" class="modal">
227+
<div class="modal-content">
228+
<div class="modal-header">
229+
<span class="close" onclick="closeModal('modal3')">&times;</span>
230+
OpenSearch Release Build and Integration Test Results
231+
</div>
232+
<div class="modal-body">
233+
<iframe id="modal3-iframe" width="100%" height="100%"></iframe>
234+
</div>
235+
</div>
236+
</div>
237+
238+
<script>
239+
const versions = {
240+
{% for version in page.release_versions %}
241+
"{{ version.version }}": {
242+
releaseIssue: {{ version.release_issue }},
243+
releaseRetroIssue: {{ version.release_retro_issue }}
244+
},
245+
{% endfor %}
246+
};
247+
248+
let currentSelection = "{{ page.release_versions[0].version }}";
249+
250+
function updateDashboard(selectedVersion) {
251+
const versionData = versions[selectedVersion];
252+
253+
if (selectedVersion) {
254+
document.getElementById('release-issue').innerHTML = `The current release issue for ${selectedVersion} is <a href="https://github.com/opensearch-project/opensearch-build/issues/${versionData.releaseIssue}" style="color: #007bff; text-decoration: none;">#${versionData.releaseIssue}</a> and the release retro issue is <a href="https://github.com/opensearch-project/opensearch-build/issues/${versionData.releaseRetroIssue}" style="color: #007bff; text-decoration: none;">#${versionData.releaseRetroIssue}</a>. Please follow the release issue for updates posted by the release manager.`;
255+
256+
const baseUrl = 'https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#';
257+
const metricsUrl = `${baseUrl}/view/12d47dd0-e0cc-11ee-86f3-3358a59f8c46?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-90d,to:now))&_a=(description:'',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1710287534575',disabled:!f,index:'512c9c70-e0b3-11ee-9a74-07cd3b4ff414',key:version.keyword,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version.keyword:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
258+
259+
const testResultsUrl = `${baseUrl}/view/21aad140-49f6-11ef-bbdd-39a9b324a5aa?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1721852613904',disabled:!f,index:'16f55f10-4977-11ef-8565-15a1562cd0a0',key:version,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
260+
261+
const componentMetricsUrl = `${baseUrl}/view/be62b350-6b06-11ef-8d6b-d50babf51bc6?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now%2Fd,to:now%2Fd))&_a=(description:'',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1725485220320',disabled:!f,index:'512c9c70-e0b3-11ee-9a74-07cd3b4ff414',key:version.keyword,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version.keyword:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Component%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
262+
263+
document.getElementById('metrics-iframe').src = metricsUrl;
264+
document.getElementById('test-results-iframe').src = testResultsUrl;
265+
document.getElementById('component-metrics-iframe').src = componentMetricsUrl;
266+
document.getElementById('metrics-dashboard-link').href = metricsUrl;
267+
document.getElementById('test-results-dashboard-link').href = testResultsUrl;
268+
document.getElementById('component-metrics-dashboard-link').href = componentMetricsUrl;
269+
document.getElementById('modal1-iframe').src = metricsUrl;
270+
document.getElementById('modal2-iframe').src = componentMetricsUrl;
271+
document.getElementById('modal3-iframe').src = testResultsUrl;
272+
} else {
273+
document.getElementById('release-issue').innerHTML = '';
274+
document.getElementById('release-retro-issue').innerHTML = '';
275+
const baseUrl = 'https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#';
276+
const defaultMetricsUrl = `${baseUrl}/view/12d47dd0-e0cc-11ee-86f3-3358a59f8c46?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-90d,to:now))&_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
277+
278+
const defaultTestResultsUrl = `${baseUrl}/view/21aad140-49f6-11ef-bbdd-39a9b324a5aa?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
279+
280+
const defaultComponentMetricsUrl = `${baseUrl}/view/be62b350-6b06-11ef-8d6b-d50babf51bc6?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now%2Fd,to:now%2Fd))&_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Component%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`;
281+
282+
document.getElementById('metrics-iframe').src = defaultMetricsUrl;
283+
document.getElementById('test-results-iframe').src = defaultTestResultsUrl;
284+
document.getElementById('component-metrics-iframe').src = defaultComponentMetricsUrl;
285+
document.getElementById('metrics-dashboard-link').href = defaultMetricsUrl;
286+
document.getElementById('test-results-dashboard-link').href = defaultTestResultsUrl;
287+
document.getElementById('component-metrics-dashboard-link').href = defaultComponentMetricsUrl;
288+
document.getElementById('modal1-iframe').src = defaultMetricsUrl;
289+
document.getElementById('modal2-iframe').src = defaultComponentMetricsUrl;
290+
document.getElementById('modal3-iframe').src = defaultTestResultsUrl;
291+
}
292+
}
293+
document.addEventListener('DOMContentLoaded', function () {
294+
const defaultVersion = "{{ page.release_versions[0].version }}";
295+
document.querySelector(`.version-item[data-version="${defaultVersion}"]`).classList.add('selected');
296+
updateDashboard(defaultVersion);
297+
});
298+
document.getElementById('version-selector').addEventListener('click', function (event) {
299+
const selectedElement = event.target;
300+
if (selectedElement.classList.contains('version-item')) {
301+
const selectedVersion = selectedElement.getAttribute('data-version');
302+
303+
if (currentSelection === selectedVersion) {
304+
selectedElement.classList.remove('selected');
305+
currentSelection = '';
306+
updateDashboard('');
307+
} else {
308+
if (currentSelection) {
309+
document.querySelector(`.version-item[data-version="${currentSelection}"]`).classList.remove('selected');
310+
}
311+
selectedElement.classList.add('selected');
312+
currentSelection = selectedVersion;
313+
updateDashboard(selectedVersion);
314+
}
315+
}
316+
});
317+
</script>
318+
319+
<script>
320+
function openModal(modalId) {
321+
document.getElementById(modalId).style.display = "flex";
322+
}
323+
function closeModal(modalId) {
324+
document.getElementById(modalId).style.display = "none";
325+
}
326+
</script>
327+
328+
<h2>Join the discussion</h2>
329+
<p>
330+
Questions or contributions? Connect with the OpenSearch community in the <a href="https://opensearch.slack.com/archives/C0561HRK961">#releases</a> channel on our public Slack.
331+
</p>
332+
333+
<p>
334+
To learn more about OpenSearch Release Process, please read this <a href="https://github.com/opensearch-project/opensearch-build/wiki/Releasing-the-Distribution">wiki document</a> part of the opensearch-build repo.
335+
</p>

‎release-metrics/index.md

-197
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.