Skip to content

Commit 464042e

Browse files
demos(opensearch-rag): Wait for OpenSearch Dashboards to become ready
1 parent 6030d62 commit 464042e

1 file changed

Lines changed: 34 additions & 9 deletions

File tree

demos/opensearch-rag/load-embeddings-from-git.yaml

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,22 @@ data:
2424
OPENSEARCH_PROTOCOL = os.getenv('OPENSEARCH_PROTOCOL', 'https')
2525
OPENSEARCH_USER = os.getenv('OPENSEARCH_USER', 'admin')
2626
OPENSEARCH_PASSWORD = os.getenv('OPENSEARCH_PASSWORD', 'adminadmin')
27+
OPENSEARCH_DASHBOARDS_HOST = os.getenv('DASHBOARDS_HOST', 'opensearch-dashboards')
28+
OPENSEARCH_DASHBOARDS_PORT = os.getenv('DASHBOARDS_PORT', '5601')
2729
INDEX_NAME = os.getenv('INDEX_NAME', 'rag-documents')
2830
EMBEDDINGS_FILE = os.getenv('EMBEDDINGS_FILE', '/data/stackable-docs-embeddings.json')
2931
32+
OPENSEARCH_BASIC_AUTH = HTTPBasicAuth(OPENSEARCH_USER, OPENSEARCH_PASSWORD)
33+
OPENSEARCH_DASHBOARDS_BASE_URL = f'http://{OPENSEARCH_DASHBOARDS_HOST}:{OPENSEARCH_DASHBOARDS_PORT}'
34+
3035
def wait_for_opensearch():
3136
"""Wait for OpenSearch to be ready."""
3237
print("Waiting for OpenSearch to be ready...")
3338
for i in range(60):
3439
try:
3540
response = requests.get(
3641
OPENSEARCH_HOSTS,
37-
auth=HTTPBasicAuth(OPENSEARCH_USER, OPENSEARCH_PASSWORD),
42+
auth=OPENSEARCH_BASIC_AUTH,
3843
verify=False,
3944
timeout=5
4045
)
@@ -48,6 +53,27 @@ data:
4853
print("[ERROR] OpenSearch did not become ready in time")
4954
return False
5055
56+
def wait_for_opensearch_dashboards():
57+
"""Wait for OpenSearch Dashboards to be ready."""
58+
print("Waiting for OpenSearch Dashboards to be ready...")
59+
for i in range(60):
60+
try:
61+
response = requests.get(
62+
OPENSEARCH_DASHBOARDS_BASE_URL,
63+
auth=OPENSEARCH_BASIC_AUTH,
64+
verify=False,
65+
timeout=5
66+
)
67+
if response.status_code == 200:
68+
print("[OK] OpenSearch Dashboards is ready!")
69+
return True
70+
except Exception:
71+
print(f"Waiting for OpenSearch Dashboards... ({i+1}/60)")
72+
time.sleep(5)
73+
74+
print("[ERROR] OpenSearch Dashboards did not become ready in time")
75+
return False
76+
5177
def index_needs_loading(client):
5278
"""Check if index exists and has documents. Returns True if loading is needed."""
5379
if not client.indices.exists(index=INDEX_NAME):
@@ -137,17 +163,13 @@ data:
137163
138164
def create_index_pattern():
139165
"""Create index pattern in OpenSearch Dashboards and set as default."""
140-
dashboards_host = os.getenv('DASHBOARDS_HOST', 'opensearch-dashboards')
141-
dashboards_port = os.getenv('DASHBOARDS_PORT', '5601')
142-
base_url = f'http://{dashboards_host}:{dashboards_port}'
143166
headers = {"osd-xsrf": "true"}
144-
auth = HTTPBasicAuth(OPENSEARCH_USER, OPENSEARCH_PASSWORD)
145167
146168
# Create index pattern
147169
response = requests.post(
148-
f'{base_url}/api/saved_objects/index-pattern/{INDEX_NAME}?overwrite=true',
170+
f'{OPENSEARCH_DASHBOARDS_BASE_URL}/api/saved_objects/index-pattern/{INDEX_NAME}?overwrite=true',
149171
json={"attributes": {"title": INDEX_NAME, "timeFieldName": "timestamp"}},
150-
auth=auth, headers=headers, timeout=10
172+
auth=OPENSEARCH_BASIC_AUTH, headers=headers, timeout=10
151173
)
152174
if response.status_code not in (200, 201, 409):
153175
print(f"[ERROR] Failed to create index pattern: {response.status_code} - {response.text}")
@@ -156,9 +178,9 @@ data:
156178
157179
# Set as default
158180
response = requests.post(
159-
f'{base_url}/api/opensearch-dashboards/settings',
181+
f'{OPENSEARCH_DASHBOARDS_BASE_URL}/api/opensearch-dashboards/settings',
160182
json={"changes": {"defaultIndex": INDEX_NAME}},
161-
auth=auth, headers=headers, timeout=10
183+
auth=OPENSEARCH_BASIC_AUTH, headers=headers, timeout=10
162184
)
163185
if response.status_code in (200, 201):
164186
print(f"[OK] Set {INDEX_NAME} as default index pattern")
@@ -203,6 +225,9 @@ data:
203225
if not wait_for_opensearch():
204226
return 1
205227
228+
if not wait_for_opensearch_dashboards():
229+
return 1
230+
206231
client = OpenSearch(
207232
hosts=[{'host': OPENSEARCH_HOSTNAME, 'port': OPENSEARCH_PORT}],
208233
http_auth=(OPENSEARCH_USER, OPENSEARCH_PASSWORD),

0 commit comments

Comments
 (0)