Skip to content

Commit 8993871

Browse files
authored
fix: Deploy test catalog data on ODH for sorting tests (#1730)
* fix: Deploy test catalog data on ODH for sorting tests Signed-off-by: Debarati Basu-Nag <dbasunag@redhat.com> AI-assisted: Claude Code (Opus 4.6) * fix: add missing script Signed-off-by: Debarati Basu-Nag <dbasunag@redhat.com> AI-assisted: Claude Code (Opus 4.6)
1 parent 2fb9b58 commit 8993871

2 files changed

Lines changed: 116 additions & 1 deletion

File tree

catalog/clients/python/odh_rules_catalog.mk

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ undeploy-mcp-catalog-odh:
88
@echo "Undeploying MCP catalog config on ODH..."
99
bash ../../../scripts/undeploy_catalog_on_odh.sh
1010

11+
.PHONY: deploy-test-catalog-odh
12+
deploy-test-catalog-odh:
13+
@echo "Deploying test catalog data on ODH..."
14+
bash ../../../scripts/deploy_test_catalog_on_odh.sh
15+
1116
.PHONY: test-e2e-catalog
12-
test-e2e-catalog: deploy-mcp-catalog-odh
17+
test-e2e-catalog: deploy-mcp-catalog-odh deploy-test-catalog-odh
1318
@echo "Running catalog tests..."
1419
export MC_NAMESPACE=$$(kubectl get datasciencecluster default-dsc -o jsonpath='{.spec.components.modelregistry.registriesNamespace}') && \
1520
export CATALOG_URL="https://$$(kubectl get route -n "$$MC_NAMESPACE" model-catalog-https -o 'jsonpath={.status.ingress[0].host}')/" && \
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
DSC_NAME="default-dsc"
6+
7+
echo "Check if DataScienceCluster exists"
8+
if kubectl get datasciencecluster "$DSC_NAME" &> /dev/null; then
9+
echo "DataScienceCluster '$DSC_NAME' exists."
10+
else
11+
echo "DataScienceCluster '$DSC_NAME' does NOT exist."
12+
exit 1
13+
fi
14+
15+
echo "Check if Model Registry is enabled in DSC"
16+
MR_STATE=$(kubectl get datasciencecluster "$DSC_NAME" -o jsonpath='{.spec.components.modelregistry.managementState}' 2>/dev/null)
17+
if [ "$MR_STATE" != "Managed" ]; then
18+
echo "Model Registry is not enabled (managementState='$MR_STATE'). Expected 'Managed'."
19+
exit 1
20+
fi
21+
echo "Model Registry is enabled (managementState='Managed')."
22+
23+
MR_NAMESPACE=$(kubectl get datasciencecluster "$DSC_NAME" -o jsonpath='{.spec.components.modelregistry.registriesNamespace}' 2>/dev/null)
24+
if [ -z "$MR_NAMESPACE" ]; then
25+
echo "Could not determine registriesNamespace from DSC."
26+
exit 1
27+
fi
28+
echo "Model Registry namespace: '$MR_NAMESPACE'"
29+
30+
echo "Looking for catalog sources ConfigMap in namespace '$MR_NAMESPACE'"
31+
if kubectl get configmap mcp-catalog-sources -n "$MR_NAMESPACE" &> /dev/null; then
32+
CATALOG_CONFIGMAP="mcp-catalog-sources"
33+
echo "ConfigMap 'mcp-catalog-sources' found."
34+
elif kubectl get configmap model-catalog-sources -n "$MR_NAMESPACE" &> /dev/null; then
35+
CATALOG_CONFIGMAP="model-catalog-sources"
36+
echo "ConfigMap 'model-catalog-sources' found (fallback)."
37+
else
38+
echo "Neither 'mcp-catalog-sources' nor 'model-catalog-sources' ConfigMap found in namespace '$MR_NAMESPACE'."
39+
exit 1
40+
fi
41+
42+
SCRIPT_DIR="$(dirname "$(realpath "$BASH_SOURCE")")"
43+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
44+
TEST_CATALOG_FILE="${REPO_ROOT}/manifests/kustomize/options/catalog/overlays/e2e/test-catalog.yaml"
45+
46+
if [ ! -f "$TEST_CATALOG_FILE" ]; then
47+
echo "Required file not found: $TEST_CATALOG_FILE"
48+
exit 1
49+
fi
50+
51+
echo "Fetching current sources.yaml from ConfigMap"
52+
CURRENT_SOURCES=$(kubectl get configmap "$CATALOG_CONFIGMAP" -n "$MR_NAMESPACE" -o jsonpath='{.data.sources\.yaml}')
53+
54+
if echo "$CURRENT_SOURCES" | grep -q "test_catalog"; then
55+
echo "test_catalog already present in sources.yaml, skipping patch."
56+
else
57+
echo "Patching ConfigMap to add test catalog source"
58+
59+
TEST_CATALOG_CONTENT=$(cat "$TEST_CATALOG_FILE")
60+
61+
TEST_CATALOG_ENTRY="
62+
catalogs:
63+
- name: Test Catalog
64+
id: test_catalog
65+
type: yaml
66+
enabled: true
67+
properties:
68+
yamlCatalogPath: test-catalog.yaml
69+
labels:
70+
- Test Catalog
71+
"
72+
73+
if echo "$CURRENT_SOURCES" | grep -q "catalogs: \[\]"; then
74+
# Replace empty catalogs: [] with test catalog entry
75+
UPDATED_SOURCES=$(echo "$CURRENT_SOURCES" | sed 's/catalogs: \[\]//')
76+
UPDATED_SOURCES="${UPDATED_SOURCES}${TEST_CATALOG_ENTRY}"
77+
elif echo "$CURRENT_SOURCES" | grep -q "^catalogs:"; then
78+
# Append to existing catalogs section
79+
UPDATED_SOURCES=$(echo "$CURRENT_SOURCES" | sed '/^catalogs:/a\
80+
- name: Test Catalog\
81+
id: test_catalog\
82+
type: yaml\
83+
enabled: true\
84+
properties:\
85+
yamlCatalogPath: test-catalog.yaml\
86+
labels:\
87+
- Test Catalog')
88+
else
89+
# No catalogs section exists, append one
90+
UPDATED_SOURCES="${CURRENT_SOURCES}${TEST_CATALOG_ENTRY}"
91+
fi
92+
93+
# Patch the existing ConfigMap: update sources.yaml and add the test catalog YAML as a data key
94+
kubectl patch configmap "$CATALOG_CONFIGMAP" -n "$MR_NAMESPACE" --type merge -p "$(cat <<EOF
95+
{"data": {"sources.yaml": $(echo "$UPDATED_SOURCES" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))'), "test-catalog.yaml": $(echo "$TEST_CATALOG_CONTENT" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))')}}
96+
EOF
97+
)"
98+
99+
echo "ConfigMap '$CATALOG_CONFIGMAP' patched successfully."
100+
101+
echo "Restarting model-catalog pod to pick up config changes"
102+
CATALOG_DEPLOYMENT=$(kubectl get deployment -n "$MR_NAMESPACE" -l app.kubernetes.io/name=model-catalog -o jsonpath='{.items[0].metadata.name}' 2>/dev/null)
103+
if [ -z "$CATALOG_DEPLOYMENT" ]; then
104+
echo "Could not find model-catalog deployment in namespace '$MR_NAMESPACE'."
105+
exit 1
106+
fi
107+
kubectl delete pod -l app.kubernetes.io/name=model-catalog -n "$MR_NAMESPACE" --wait=true
108+
kubectl wait --for=condition=Available deployment/"$CATALOG_DEPLOYMENT" -n "$MR_NAMESPACE" --timeout=5m
109+
echo "model-catalog pod is ready."
110+
fi

0 commit comments

Comments
 (0)