Skip to content

Commit d7ab555

Browse files
committed
ci(e2e): address PR review comments
- Add parent_storage_class to profiles.json for dynamic SC selection - Use profile-based PARENT_STORAGE_CLASS instead of hardcoded ceph SC - Simplify storageClasses config to single storageClass value - Remove PROFILE override, use dynamic profile variable - Update get_profile_config.sh to export PARENT_STORAGE_CLASS - Remove unused second parameter from get_profile_config.sh - Clarify environment/outputs export comment - Use full profile name 'sds-replicated-volume' everywhere
1 parent 6ca0c24 commit d7ab555

File tree

7 files changed

+29
-35
lines changed

7 files changed

+29
-35
lines changed

.github/workflows/e2e-matrix.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ on:
1818
push:
1919
branches:
2020
- chore/ci/e2e-matrix-skeleton
21-
- ci-e2e-nested-sds
2221
pull_request:
2322
types: [opened, reopened, synchronize, labeled, unlabeled]
2423
branches:
@@ -160,8 +159,7 @@ jobs:
160159
RUN_ID="${{ needs.setup-nested-envs.outputs.run_id }}"
161160
echo "run_id=$RUN_ID" >> "$GITHUB_OUTPUT"
162161
echo "RUN_ID=$RUN_ID" >> "$GITHUB_ENV"
163-
# Map sds-replicated-volume to sds for profile config
164-
echo "PROFILE=sds" >> "$GITHUB_ENV"
162+
echo "PROFILE=sds-replicated-volume" >> "$GITHUB_ENV"
165163
echo "TMP_ROOT=${{ env.TMP_ROOT }}" >> "$GITHUB_ENV"
166164
mkdir -p "${{ env.TMP_ROOT }}/shared" "${{ env.TMP_ROOT }}/matrix-logs"
167165
@@ -218,7 +216,7 @@ jobs:
218216
working-directory: ci/dvp-e2e
219217
id: profile-config
220218
env:
221-
PROFILE: sds
219+
PROFILE: sds-replicated-volume
222220
run: |
223221
# Get storage class configuration from profiles.json
224222
PROFILE_CONFIG=$(./scripts/get_profile_config.sh "${PROFILE}")
@@ -227,25 +225,28 @@ jobs:
227225
STORAGE_CLASS=$(echo "$PROFILE_CONFIG" | grep "^STORAGE_CLASS=" | cut -d'=' -f2)
228226
IMAGE_STORAGE_CLASS=$(echo "$PROFILE_CONFIG" | grep "^IMAGE_STORAGE_CLASS=" | cut -d'=' -f2)
229227
SNAPSHOT_STORAGE_CLASS=$(echo "$PROFILE_CONFIG" | grep "^SNAPSHOT_STORAGE_CLASS=" | cut -d'=' -f2)
228+
PARENT_STORAGE_CLASS=$(echo "$PROFILE_CONFIG" | grep "^PARENT_STORAGE_CLASS=" | cut -d'=' -f2)
230229
ATTACH_DISK_SIZE=$(echo "$PROFILE_CONFIG" | grep "^ATTACH_DISK_SIZE=" | cut -d'=' -f2)
231230
232231
echo "Profile: ${PROFILE}"
233232
echo "Storage Class: ${STORAGE_CLASS}"
234233
echo "Image Storage Class: ${IMAGE_STORAGE_CLASS}"
235234
echo "Snapshot Storage Class: ${SNAPSHOT_STORAGE_CLASS}"
235+
echo "Parent Storage Class: ${PARENT_STORAGE_CLASS}"
236236
echo "Attach Disk Size: ${ATTACH_DISK_SIZE}"
237237
238-
# Export variables safely
238+
# Export variables to GitHub Actions environment and outputs
239239
echo "STORAGE_CLASS=${STORAGE_CLASS}" >> $GITHUB_ENV
240240
echo "IMAGE_STORAGE_CLASS=${IMAGE_STORAGE_CLASS}" >> $GITHUB_ENV
241241
echo "SNAPSHOT_STORAGE_CLASS=${SNAPSHOT_STORAGE_CLASS}" >> $GITHUB_ENV
242+
echo "PARENT_STORAGE_CLASS=${PARENT_STORAGE_CLASS}" >> $GITHUB_ENV
242243
echo "ATTACH_DISK_SIZE=${ATTACH_DISK_SIZE}" >> $GITHUB_ENV
243244
echo "storage_class=$STORAGE_CLASS" >> $GITHUB_OUTPUT
244245
echo "image_storage_class=$IMAGE_STORAGE_CLASS" >> $GITHUB_OUTPUT
245246
echo "snapshot_storage_class=$SNAPSHOT_STORAGE_CLASS" >> $GITHUB_OUTPUT
246247
echo "attach_disk_size=$ATTACH_DISK_SIZE" >> $GITHUB_OUTPUT
247248
# Pass storage profile into run values for Helm templates
248-
PROFILE='sds' yq eval --inplace '.storageProfile = strenv(PROFILE)' "${{ env.TMP_ROOT }}/runs/${{ env.RUN_ID }}/values.yaml"
249+
yq eval --inplace ".storageProfile = \"${PROFILE}\"" "${{ env.TMP_ROOT }}/runs/${{ env.RUN_ID }}/values.yaml"
249250
# Effective disk SC used for worker data disks (prefer image SC when set)
250251
EFF_DISK_SC=${IMAGE_STORAGE_CLASS:-$STORAGE_CLASS}
251252
echo "EFFECTIVE_DISK_SC=${EFF_DISK_SC}" >> $GITHUB_ENV
@@ -267,13 +268,13 @@ jobs:
267268
- name: Bootstrap nested cluster (via jump-host)
268269
working-directory: ci/dvp-e2e
269270
run: |
270-
echo "🚀 dhctl bootstrap (profile: sds-replicated-volume -> sds)"
271+
echo "🚀 dhctl bootstrap (profile: sds-replicated-volume)"
271272
task dhctl-bootstrap \
272273
TMP_DIR="${{ env.TMP_ROOT }}/runs/${{ env.RUN_ID }}" \
273274
VALUES_FILE="${{ env.TMP_ROOT }}/runs/${{ env.RUN_ID }}/values.yaml" \
274275
PARENT_KUBECONFIG="${KUBECONFIG}" \
275276
SSH_FILE_NAME="id_ed" \
276-
TARGET_STORAGE_CLASS="ceph-pool-r2-csi-rbd-immediate"
277+
TARGET_STORAGE_CLASS="${{ env.PARENT_STORAGE_CLASS }}"
277278
278279
- name: Attach data disks to worker VMs using hotplug
279280
working-directory: ci/dvp-e2e

ci/dvp-e2e/Taskfile.yaml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,10 +301,10 @@ tasks:
301301
fi
302302
303303
pvc_name=""
304-
for j in $(seq 1 30); do
304+
for j in $(seq 1 50); do
305305
pvc_name=$(kubectl -n {{ .NAMESPACE }} get vd "$vd" -o jsonpath='{.status.target.persistentVolumeClaimName}' 2>/dev/null || true)
306306
[ -n "$pvc_name" ] && break
307-
echo "[INFRA] Waiting for PVC name for VD $vd; retry $j/30"; sleep 3
307+
echo "[INFRA] Waiting for PVC name for VD $vd; retry $j/50"; sleep 3
308308
done
309309
if [ -n "$pvc_name" ]; then
310310
echo "[INFRA] Waiting PVC $pvc_name to reach phase=Bound..."
@@ -347,7 +347,7 @@ tasks:
347347
348348
echo "[INFRA] Waiting for hotplug attachment of $vd..."
349349
success_by_vm=0
350-
for i in $(seq 1 30); do
350+
for i in $(seq 1 50); do
351351
phase=$(kubectl -n {{ .NAMESPACE }} get virtualmachineblockdeviceattachment "$vd" -o jsonpath='{.status.phase}' 2>/dev/null || true)
352352
if [ "$phase" = "Attached" ]; then
353353
echo "[INFRA] Disk $vd successfully attached to VM $vm"; break
@@ -360,9 +360,9 @@ tasks:
360360
break
361361
fi
362362
363-
# Print status approximately every 30 seconds (poll interval is 5s)
364-
if [ $((i % 6)) -eq 0 ]; then
365-
echo "[INFRA] Disk $vd phase=$phase; retry $i/30"
363+
# Print status approximately every 50 seconds (poll interval is 5s)
364+
if [ $((i % 10)) -eq 0 ]; then
365+
echo "[INFRA] Disk $vd phase=$phase; retry $i/50"
366366
fi
367367
sleep 5
368368
@@ -468,10 +468,6 @@ tasks:
468468
if [ -n "{{ .TARGET_STORAGE_CLASS | default "" }}" ]; then
469469
export _SC='{{ .TARGET_STORAGE_CLASS }}'
470470
yq eval --inplace '.storageClass = env(_SC)' {{ .GENERATED_VALUES_FILE }}
471-
yq eval --inplace '.storageClasses.controlPlane.root = env(_SC)' {{ .GENERATED_VALUES_FILE }}
472-
yq eval --inplace '.storageClasses.controlPlane.etcd = env(_SC)' {{ .GENERATED_VALUES_FILE }}
473-
yq eval --inplace '.storageClasses.workers.root = env(_SC)' {{ .GENERATED_VALUES_FILE }}
474-
yq eval --inplace '.storageClasses.workers.data = env(_SC)' {{ .GENERATED_VALUES_FILE }}
475471
fi
476472
- |
477473
export SSH_PUB_KEY="$(cat {{ .SSH_PUB_KEY_FILE }})"
@@ -715,12 +711,12 @@ tasks:
715711
- |
716712
set -euo pipefail
717713
echo "[SDS] Waiting for API server to be ready..."
718-
for i in $(seq 1 30); do
714+
for i in $(seq 1 50); do
719715
if KUBECONFIG={{ .NESTED_KUBECONFIG }} kubectl get nodes >/dev/null 2>&1; then
720716
echo "[SDS] API server is ready!"
721717
break
722718
fi
723-
echo "[SDS] API server not ready yet, retry $i/30"; sleep 10
719+
echo "[SDS] API server not ready yet, retry $i/50"; sleep 10
724720
done
725721
- |
726722
set -euo pipefail

ci/dvp-e2e/charts/cluster-config/templates/cluster-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ masterNodeGroup:
3636
virtualMachineClassName: "{{ .Values.namespace }}-cpu"
3737
rootDisk:
3838
size: 50Gi
39-
storageClass: {{ .Values.storageClasses.controlPlane.root }}
39+
storageClass: {{ .Values.storageClass }}
4040
image:
4141
kind: VirtualImage
4242
name: image
4343
etcdDisk:
4444
size: 15Gi
45-
storageClass: {{ .Values.storageClasses.controlPlane.etcd }}
45+
storageClass: {{ .Values.storageClass }}
4646
provider:
4747
kubeconfigDataBase64: {{ .Values.kubeconfigDataBase64 }}
4848
namespace: {{ .Values.namespace }}

ci/dvp-e2e/charts/cluster-config/templates/nodegroups.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ spec:
1515
bootloader: {{ $.Values.image.bootloader }}
1616
rootDisk:
1717
size: 50Gi
18-
storageClass: {{ $.Values.storageClasses.workers.root }}
18+
storageClass: {{ $.Values.storageClass }}
1919
image:
2020
kind: VirtualImage
2121
name: image

ci/dvp-e2e/charts/cluster-config/values.yaml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,8 @@ ingressHosts:
3737
- console
3838
- virtualization
3939

40-
# Storage classes configuration (for parent cluster)
41-
storageClasses:
42-
controlPlane:
43-
root: ceph-pool-r2-csi-rbd-immediate
44-
etcd: ceph-pool-r2-csi-rbd-immediate
45-
workers:
46-
root: ceph-pool-r2-csi-rbd-immediate
40+
# Storage class for parent cluster VMs (overridden by workflow from profile)
41+
storageClass: ceph-pool-r2-csi-rbd-immediate
4742

4843
# Feature flags (only those used by templates)
4944
features:

ci/dvp-e2e/profiles.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
[
22
{
3-
"name": "sds",
3+
"name": "sds-replicated-volume",
44
"storage_class": "linstor-thin-r2",
55
"image_storage_class": "linstor-thin-r1-immediate",
66
"snapshot_storage_class": "linstor-thin-r2",
7+
"parent_storage_class": "linstor-thin-r1-immediate",
78
"worker_data_disk_size": "10Gi",
89
"description": "SDS storage with LINSTOR thin provisioning"
910
}

ci/dvp-e2e/scripts/get_profile_config.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
set -euo pipefail
2121

2222
PROFILE="${1:-}"
23-
PROFILES_FILE="${2:-./profiles.json}"
23+
PROFILES_FILE="./profiles.json"
2424

2525
if [[ -z "$PROFILE" ]]; then
26-
echo "Usage: $0 <profile_name> [profiles_file]" >&2
26+
echo "Usage: $0 <profile_name>" >&2
2727
exit 1
2828
fi
2929

@@ -35,7 +35,7 @@ fi
3535
# Use jq to find profile by exact name only
3636
PROFILE_CONFIG=$(jq -r --arg profile "$PROFILE" '
3737
.[] | select(.name == $profile) |
38-
"\(.storage_class)|\(.image_storage_class)|\(.snapshot_storage_class)|\(.worker_data_disk_size // "10Gi")"
38+
"\(.storage_class)|\(.image_storage_class)|\(.snapshot_storage_class)|\(.parent_storage_class)|\(.worker_data_disk_size // "10Gi")"
3939
' "$PROFILES_FILE")
4040

4141
if [[ -z "$PROFILE_CONFIG" || "$PROFILE_CONFIG" == "null" ]]; then
@@ -46,9 +46,10 @@ if [[ -z "$PROFILE_CONFIG" || "$PROFILE_CONFIG" == "null" ]]; then
4646
fi
4747

4848
# Split the result and export variables
49-
IFS='|' read -r SC IMG_SC SNAP_SC ATTACH_SIZE <<< "$PROFILE_CONFIG"
49+
IFS='|' read -r SC IMG_SC SNAP_SC PARENT_SC ATTACH_SIZE <<< "$PROFILE_CONFIG"
5050

5151
echo "STORAGE_CLASS=$SC"
5252
echo "IMAGE_STORAGE_CLASS=$IMG_SC"
5353
echo "SNAPSHOT_STORAGE_CLASS=$SNAP_SC"
54+
echo "PARENT_STORAGE_CLASS=$PARENT_SC"
5455
echo "ATTACH_DISK_SIZE=$ATTACH_SIZE"

0 commit comments

Comments
 (0)