feat: implement environment and package resources via fission CRD

This commit is contained in:
Naeel
2026-04-14 22:36:54 +03:00
parent a8c28c751e
commit 8842ec070e
7 changed files with 805 additions and 24 deletions
+40
View File
@@ -0,0 +1,40 @@
# Progress Log
## 2026-04-14
### План перед работой
- Зафиксировать, что REST `/v2/*` недоступен в текущем кластере Fission v1.22.1 и MVP идет через Kubernetes CRD API.
- Реализовать первый рабочий Terraform ресурс `fission_environment`.
- Добавить минимальный CRUD в клиент для CRD `environments.fission.io`.
- Проверить сборку `go build ./...`.
### Факт выполнения
- Обновлен план в `doc/CODEX_PLAN.md`: путь реализации переведен на CRD API.
- Создан каркас провайдера и заготовки ресурсов.
- Реализован рабочий `fission_environment`:
- schema (name, image, version, poolsize, namespace, id, uid)
- Configure() с получением клиента из provider
- Create/Read/Update/Delete через Kubernetes CRD `environments.fission.io`
- В `internal/client/client.go` добавлены методы:
- CreateEnvironment / GetEnvironment / UpdateEnvironment / DeleteEnvironment
- IsNotFound для обработки удаления/дрейфа state
- Проверка `go build ./...` проходит успешно.
### Следующий шаг
- Реализовать `fission_package` (zip/base64 -> spec.source.literal) через CRD `packages.fission.io`.
### Обновление этапа (fission_package)
- Реализован CRUD в `internal/client/client.go` для `packages.fission.io`:
- `CreatePackage`
- `GetPackage`
- `UpdatePackage`
- `DeletePackage`
- Реализован ресурс `fission_package` в `internal/resources/package_resource.go`:
- schema: `name`, `environment`, `source_dir`, `code_path`, `code_hash`, `build_command`, `namespace`, computed `id`, `uid`, `build_status`, `build_log`
- валидация источника кода: задан ровно один из `source_dir` или `code_path`
- упаковка `source_dir` в zip и кодирование base64 в `spec.source.literal`
- Create/Read/Update/Delete через Kubernetes CRD API
- Проверка сборки: `go build ./...` успешно.
### Следующий шаг
- Реализовать `fission_function` через CRD `functions.fission.io`.