From 3c49991a86cb26dd0447fa748d1df9df5aed92bb Mon Sep 17 00:00:00 2001
From: Mark Goddard <mark@stackhpc.com>
Date: Mon, 19 Aug 2024 11:29:06 +0100
Subject: [PATCH] Pin OpenSearch Dashboards to 2.15

OpenSearch Dashboards 2.16.0 discover page hangs after initial
deployment due to an upstream bug [1].

This change fixes the issue by pinning OpenSearch Dashboards to 2.15.

Note that it seemed safer not to pin OpenSearch to fix this issue, to
avoid breaking deployments that have already deployed 2.16.

[1] https://github.com/opensearch-project/OpenSearch-Dashboards/issues/7626

Closes-Bug: #2077319
Change-Id: I0de9928b2657ab5f31580325e866bff28f2b5510
---
 .../opensearch-dashboards/Dockerfile.j2           | 15 ++++++++++++++-
 .../apt_preferences_opensearch_dashboards         |  3 +++
 .../notes/bug-2077319-a47a06175a589a1a.yaml       |  9 +++++++++
 3 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 docker/opensearch/opensearch-dashboards/apt_preferences_opensearch_dashboards
 create mode 100644 releasenotes/notes/bug-2077319-a47a06175a589a1a.yaml

diff --git a/docker/opensearch/opensearch-dashboards/Dockerfile.j2 b/docker/opensearch/opensearch-dashboards/Dockerfile.j2
index a4bbd29f44..ee3ffa41b9 100644
--- a/docker/opensearch/opensearch-dashboards/Dockerfile.j2
+++ b/docker/opensearch/opensearch-dashboards/Dockerfile.j2
@@ -10,7 +10,20 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
 {{ macros.configure_user(name='opensearch-dashboards', shell='/bin/bash', homedir='/usr/share/opensearch-dashboards') }}
 {{ macros.enable_extra_repos(['opensearch-dashboards']) }}
 
-{% set opensearch_dashboards_packages = ['opensearch-dashboards'] %}
+# NOTE(mgoddard): Pinning to 2.15 due to https://bugs.launchpad.net/kolla/+bug/2077319
+{% if base_package_type == 'deb' %}
+COPY apt_preferences_opensearch_dashboards /etc/apt/preferences.d/opensearch_dashboards
+{% endif %}
+
+{% if base_package_type == 'rpm' %}
+    {% set opensearch_dashboards_packages = [
+        'opensearch-dashboards-2.15.*'
+    ] %}
+{% elif base_package_type == 'deb' %}
+    {% set opensearch_dashboards_packages = [
+        'opensearch-dashboards'
+    ] %}
+{% endif %}
 
 {{ macros.install_packages(opensearch_dashboards_packages | customizable("packages")) }}
 
diff --git a/docker/opensearch/opensearch-dashboards/apt_preferences_opensearch_dashboards b/docker/opensearch/opensearch-dashboards/apt_preferences_opensearch_dashboards
new file mode 100644
index 0000000000..78bcda585b
--- /dev/null
+++ b/docker/opensearch/opensearch-dashboards/apt_preferences_opensearch_dashboards
@@ -0,0 +1,3 @@
+Package: opensearch-dashboards
+Pin: version 2.15.*
+Pin-Priority: 1000
diff --git a/releasenotes/notes/bug-2077319-a47a06175a589a1a.yaml b/releasenotes/notes/bug-2077319-a47a06175a589a1a.yaml
new file mode 100644
index 0000000000..7a259609f6
--- /dev/null
+++ b/releasenotes/notes/bug-2077319-a47a06175a589a1a.yaml
@@ -0,0 +1,9 @@
+---
+fixes:
+  - |
+    Fixes an `issue
+    <https://github.com/opensearch-project/OpenSearch-Dashboards/issues/7626>`__
+    in the OpenSearch Dashboards image where the discover page would hang after
+    initial deployment when there is no index pattern. This has been resolved
+    by reverting OpenSearch Dashboards to version 2.15.
+    `LP#2077319 <https://bugs.launchpad.net/kolla/+bug/2077319>`__