fix: v0.1.50 — runtime 400 + SLESS_ENTRYPOINT в Deployment
Bug 1: services.go — k8s IsInvalid error (CRD enum validation) маппился в 500. Теперь errors.IsInvalid() → 400 Bad Request (invalid service spec). Bug 2: service_controller.go buildServiceDeployment не передавал env SLESS_ENTRYPOINT в под. Добавлен в envVars из svc.Spec.Entrypoint. Без него server.py использовал fallback handler.handle и не замечал неверный entrypoint. operator_failure_test.sh 12B-2: обновлён под новое правильное поведение — create ruby3.0 → 400 (не 201). Старый 201-путь сохранён как warn для совместимости.
This commit is contained in:
@@ -415,17 +415,21 @@ else
|
||||
fail "create $CORRUPT_FN → HTTP $create_code"
|
||||
fi
|
||||
|
||||
# 12B-2: Неверный runtime ("ruby3.0") — создаётся, но upload падает
|
||||
# 12B-2: Неверный runtime ("ruby3.0") — CRD enum validation отклоняет немедленно
|
||||
# v0.1.50: исправлено — services.go теперь маппит k8s IsInvalid → 400 вместо 500
|
||||
BADRT_FN="badrt-${SFX}"
|
||||
CLEANUP_NAMES+=("$BADRT_FN")
|
||||
info "12B-2 runtime='ruby3.0' → create ожидаем 201, upload ожидаем 400..."
|
||||
info "12B-2 runtime='ruby3.0' → create ожидаем 400 (CRD enum validation)..."
|
||||
create_code2=$(api_code POST "$API/services" \
|
||||
"{\"name\":\"$BADRT_FN\",\"runtime\":\"ruby3.0\",\
|
||||
\"entrypoint\":\"handler.handle\",\"memory_mb\":128}")
|
||||
if [[ "$create_code2" == "201" ]]; then
|
||||
pass "runtime=ruby3.0 → create HTTP 201 (API не валидирует runtime имена)"
|
||||
if [[ "$create_code2" == "400" ]]; then
|
||||
pass "runtime=ruby3.0 → create HTTP 400 (CRD enum validation отклонил немедленно)"
|
||||
CLEANUP_NAMES=( "${CLEANUP_NAMES[@]/$BADRT_FN}" )
|
||||
elif [[ "$create_code2" == "201" ]]; then
|
||||
# Старое поведение (до v0.1.50): API принимал любое имя runtime, ошибка на upload
|
||||
warn "runtime=ruby3.0 → create HTTP 201 (CRD enum validation не работает — проверь CRD)"
|
||||
note "GAP: API принимает любое runtime имя при создании; ошибка только на upload."
|
||||
# Загружаем минимальный zip — PrepareContext упадёт на runtimeBaseImage("ruby3.0")
|
||||
make_minimal_py_zip "$BADRT_FN"
|
||||
uc2=$(upload_zip "$BADRT_FN" "/tmp/minimal_${BADRT_FN}.zip")
|
||||
if [[ "$uc2" == "400" ]]; then
|
||||
@@ -437,7 +441,7 @@ if [[ "$create_code2" == "201" ]]; then
|
||||
"$(api_code DELETE "$API/services/$BADRT_FN")" "204"
|
||||
CLEANUP_NAMES=( "${CLEANUP_NAMES[@]/$BADRT_FN}" )
|
||||
else
|
||||
fail "runtime=ruby3.0 → create HTTP $create_code2 (ожидали 201)"
|
||||
fail "runtime=ruby3.0 → create HTTP $create_code2 (ожидали 400)"
|
||||
fi
|
||||
|
||||
# 12B-3: Пустой zip (без handler.py) — upload и build проходят, но контейнер падает
|
||||
|
||||
Reference in New Issue
Block a user