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`.
+62
View File
@@ -0,0 +1,62 @@
# Thinking Log
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
Дата: 2026-04-14
---
## План (до действий)
1. Проверить реальное состояние кода после scaffold и внешних правок.
2. Зафиксировать документацию этапа до изменений в коде.
3. Реализовать первый рабочий ресурс `fission_environment` как базовую вертикаль (provider -> client -> resource CRUD).
4. Скомпилировать проект и поправить ошибки.
5. Обновить документацию по факту и закоммитить этап.
## Результат (после предыдущих действий)
- Подтверждено, что REST `/v2/*` в текущей установке недоступен.
- План реализации переключен на Kubernetes CRD API.
- Создан и собран каркас провайдера.
- Сейчас выполняется реализация первого рабочего ресурса.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 2)
1. Реализовать CRUD методы клиента для `environments.fission.io`.
2. Реализовать полный lifecycle ресурса `fission_environment`.
3. Проверить сборку и привести код к чистому состоянию.
4. Зафиксировать результат в документации.
## Результат (после действий, этап 2)
- В `internal/client/client.go` реализованы методы CRUD для Environment CRD.
- В `internal/resources/environment_resource.go` реализован полноценный ресурс:
- schema атрибутов
- Configure/Create/Read/Update/Delete
- преобразование model <-> unstructured
- Сборка `go build ./...` успешна.
- Этап готов к коммиту и переходу к `fission_package`.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 3)
1. Реализовать CRUD методы клиента для `packages.fission.io`.
2. Реализовать ресурс `fission_package` с загрузкой кода из `source_dir` или `code_path`.
3. Проверить сборку.
4. Обновить документацию и зафиксировать этап.
## Результат (после действий, этап 3)
- В `internal/client/client.go` добавлены методы CRUD для Package CRD.
- В `internal/resources/package_resource.go` реализован рабочий ресурс `fission_package`:
- schema ресурса
- проверка источника кода (ровно один из `source_dir`/`code_path`)
- упаковка директории в zip
- base64 в `spec.source.literal`
- Create/Read/Update/Delete через CRD API
- Сборка `go build ./...` успешна.
- Следующий этап: `fission_function`.