Files

212 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 4)
1. Реализовать CRUD методы клиента для `functions.fission.io`.
2. Реализовать ресурс `fission_function`.
3. Проверить сборку.
4. Обновить документацию этапа.
## Результат (после действий, этап 4)
- В `internal/client/client.go` добавлены методы CRUD для Function CRD.
- В `internal/resources/function_resource.go` реализован рабочий ресурс `fission_function`:
- schema с обязательными `name`, `environment`, `package_name`, `entrypoint`
- Configure/Create/Read/Update/Delete
- преобразование terraform model <-> CRD payload
- Сборка `go build ./...` успешна.
- Следующий этап: `fission_http_trigger`.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 5)
1. Реализовать CRUD методы клиента для `httptriggers.fission.io`.
2. Реализовать ресурс `fission_http_trigger`.
3. Проверить сборку.
4. Обновить документацию этапа.
## Результат (после действий, этап 5)
- В `internal/client/client.go` добавлены методы CRUD для HTTPTrigger CRD.
- В `internal/resources/http_trigger_resource.go` реализован рабочий ресурс `fission_http_trigger`:
- schema с `name`, `function`, `url`, `methods`, `create_ingress`, `host`
- Configure/Create/Read/Update/Delete
- преобразование terraform model <-> CRD payload
- Сборка `go build ./...` успешна.
- Следующий этап: пример Terraform и smoke apply.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 6)
1. Добавить пример Terraform под текущий набор реализованных ресурсов.
2. Добавить простой код функции для примера.
3. Зафиксировать изменения в документации.
## Результат (после действий, этап 6)
- Создан `examples/hello-python/main.tf`.
- Создан `examples/hello-python/code/main.py`.
- Пример покрывает цепочку Environment -> Package -> Function -> HTTPTrigger.
- Следующий этап: установить бинарник провайдера в локальный plugin cache и прогнать smoke `terraform init/plan/apply`.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 7)
1. Выполнить smoke `terraform plan/apply` с dev override.
2. Проверить рабочий HTTP endpoint функции.
3. Зафиксировать найденные дефекты провайдера и исправить их.
## Результат (после действий, этап 7)
- Выполнен `terraform plan` для `examples/hello-python`.
- Выполнен `terraform apply`.
- Найдены и исправлены дефекты:
- `fission_package`: computed-поля могли оставаться unknown после Create.
- `fission_function`: отсутствовал обязательный `spec.InvokeStrategy`.
- `fission_http_trigger`: несогласованность состояния для `create_ingress`.
- После фиксов выполнен повторный apply и проверка endpoint:
- `https://fission.kube5s.ru/tf-hello` -> `hello from fission via terraform`.
- MVP-цепочка ресурсов работает end-to-end на кластере.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 8)
1. Добавить поддержку `terraform import` для всех реализованных ресурсов.
2. Добавить unit-тесты на критичную логику конвертации и валидации.
3. Прогнать `go test` и повторный smoke `terraform plan/apply`.
## Результат (после действий, этап 8)
- Добавлен общий helper парсинга import ID (`namespace/name`).
- Добавлен `ImportState` для ресурсов Environment/Package/Function/HTTPTrigger.
- Добавлены unit-тесты для `internal/resources`.
- Прогон `go test ./...` успешен.
- Повторный `terraform apply` успешен.
- Финальная проверка endpoint:
- `GET /tf-hello` -> `hello from fission via terraform`.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 9)
1. Добавить acceptance-тест для реального CRUD через `internal/client`.
2. Прогнать unit + acceptance тесты.
3. Зафиксировать результат в документации.
## Результат (после действий, этап 9)
- Добавлен `internal/client/client_acceptance_test.go`.
- Unit-тесты: PASS.
- Acceptance-тест `TestAcceptanceFissionCRUD`: PASS.
- Тест создает и удаляет Environment/Package/Function/HTTPTrigger в реальном кластере.
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 10)
1. Добавить набор из нескольких функций для нагрузочного сценария.
2. Развернуть их через Terraform.
3. Прогнать суровую параллельную нагрузку и добиться стабильного результата.
## Результат (после действий, этап 10)
- Добавлен `examples/stress-suite` с 3 функциями (`fast`, `cpu`, `json`).
- Добавлен `load_test.sh` для массовых параллельных вызовов.
- Начальный прогон выявил просадку на `cpu/json`, после чего:
- увеличен `poolsize` environment до `10`
- облегчена `cpu` функция
- добавлен retry в нагрузочном скрипте и breakdown fail-кодов
- Финальный прогон `900x90`:
- fast: 100%
- cpu: 100%
- json: 100%
---
Агент: GitHub Copilot
Модель: GPT-5.3-Codex
## План (до действий, этап 11)
1. Убрать Python-only ограничение в `fission_package.source_dir`.
2. Добавить поддержку JS/Go исходников на уровне package loader.
3. Закрыть изменения unit-тестами.
## Результат (после действий, этап 11)
- `fission_package` теперь поддерживает `main.py`, `main.js`, `main.go` в `source_dir`.
- Добавлены unit-тесты для JS/Go веток `loadPackageLiteral`.
- `go test ./...` проходит.