Аудит провайдера vs каноничный Fission. Добавлено:
Environment:
- builder_image, builder_command для Go и языков с build step
Package:
- deploy_type (literal/source) для переключения deployment/source archive
- loadPackageSourceArchive() — zip-упаковка source_dir
- Убран пустой source:{} из literal mode
Function:
- executor_type (poolmgr/newdeploy/container)
- function_timeout, idle_timeout
- min_scale, max_scale для ExecutionStrategy
Все 21 тест пройден. Обратная совместимость проверена.
Документация: doc/AUDIT_PROVIDER_VS_FISSION_2026-06-03.md
60 lines
2.8 KiB
Markdown
60 lines
2.8 KiB
Markdown
# Thinking Log — Аудит провайдера, 2026-06-03
|
|
|
|
## Задача
|
|
Тщательное сравнение нашего Terraform provider для Fission с каноническим поведением Fission CLI и CRD types.
|
|
|
|
## Что было сделано
|
|
|
|
### 1. Чтение нашего кода
|
|
Прочитаны все 10 .go файлов (~1500 строк):
|
|
- `environment_resource.go` (136 строк)
|
|
- `package_resource.go` (460 строк)
|
|
- `function_resource.go` (350 строк)
|
|
- `http_trigger_resource.go` (310 строк)
|
|
- `client.go` (295 строк)
|
|
- `validation_helpers.go`, `import_helpers.go`
|
|
- 3 тест-файла
|
|
|
|
### 2. Чтение канонических исходников Fission
|
|
- `pkg/apis/core/v1/types.go` — все CRD Go-структуры
|
|
- `pkg/apis/core/v1/const.go` — константы (ArchiveLiteralSizeLimit=256KB, BuildStatus*, ExecutorType*)
|
|
- CLI: `environment/create.go`, `package/create.go`, `package/util/util.go`
|
|
- StorageSvc: `storagesvc/client/client.go`
|
|
|
|
### 3. Дамп реальных CRD из кластера
|
|
Через kubectl получены ВСЕ объекты всех 4 типов из кластера:
|
|
- 20+ environments (наши tf-* и CLI-созданные)
|
|
- 15+ functions (наши tf-* и CLI-созданные)
|
|
- 15+ packages (наши и CLI)
|
|
- 15+ httptriggers
|
|
|
|
### 4. Сравнительный анализ
|
|
Для каждого ресурса: поле-за-полем наш payload vs CLI payload vs канон types.go.
|
|
|
|
## Ключевые находки
|
|
|
|
### Что правильно
|
|
- environment: version, runtime.image, poolsize — ок
|
|
- package: deployment.literal base64 — ок
|
|
- function: InvokeStrategy structure, package.functionName — ок
|
|
- httptrigger: relativeurl, methods, functionref, createingress — ок
|
|
- client.go: чистый CRUD, GVR правильные — ок
|
|
|
|
### Что отсутствует (критично)
|
|
1. **Environment.builder** — нет builder_image/builder_command → Go не работает через builder pipeline
|
|
2. **Package source archive** — только deployment-only, нет source+build flow
|
|
|
|
### Что отсутствует (важно)
|
|
3. **Function executor_type** — hardcoded poolmgr, нет newdeploy/container
|
|
4. **Function timeouts** — нет functionTimeout, idleTimeout
|
|
5. **Function scaling** — нет minScale, maxScale
|
|
|
|
### Что отсутствует (некритично)
|
|
6. Package: пустой `source: {}` — мусор но не bug
|
|
7. Environment: resources, imagepullsecret, keeparchive
|
|
8. Function: concurrency, requestsPerPod, resources, secrets
|
|
9. HTTPTrigger: prefix, keepPrefix, полный ingressconfig
|
|
|
|
## Решение
|
|
Написан полный аудит-документ: `doc/AUDIT_PROVIDER_VS_FISSION_2026-06-03.md`
|