feat: demo managed functions with harbor-backed operator setup

This commit is contained in:
Naeel
2026-03-14 18:16:53 +03:00
parent cbd2c8c44c
commit 8dd5b676c0
14 changed files with 687 additions and 1 deletions
@@ -0,0 +1,26 @@
# Изменено: 2026-03-14
# event-cleaner: HTTP функция для демонстрации контролируемого изменения логики.
# Работает без внешних пакетов.
import json
from datetime import datetime, timezone
def handle(event):
"""Принимает delete_n и возвращает подтверждение обработки."""
payload = event if isinstance(event, dict) else {}
delete_n = int(payload.get("delete_n", 10))
delete_n = max(1, min(delete_n, 100))
now = datetime.now(timezone.utc).isoformat()
# Здесь intentionally имитируем очистку, чтобы показать реакцию на входные параметры.
return json.dumps(
{
"ok": True,
"accepted_delete_n": delete_n,
"status": "simulated-cleanup",
"generated_at": now,
}
), 200, {"Content-Type": "application/json"}
@@ -0,0 +1,25 @@
# Изменено: 2026-03-14
# event-monitor: cron-функция для демонстрации расписания и управления кодом.
# Работает без внешних библиотек и возвращает диагностический JSON.
import json
import os
from datetime import datetime, timezone
THRESHOLD = 50
def handle(request):
"""Отдаёт heartbeat для cron-запуска и видимой проверки после apply."""
rabbitmq_url = os.environ.get("RABBITMQ_URL", "not-set")
now = datetime.now(timezone.utc).isoformat()
return json.dumps(
{
"ok": True,
"monitor": "alive",
"threshold": THRESHOLD,
"rabbitmq_configured": rabbitmq_url != "not-set",
"generated_at": now,
}
), 200, {"Content-Type": "application/json"}
@@ -0,0 +1,28 @@
# Изменено: 2026-03-14
# event-writer: простая HTTP функция без внешних зависимостей.
# Правка поля response_tag в коде сразу видна в ответе после terraform apply.
import json
import os
from datetime import datetime, timezone
def handle(event):
"""Возвращает полезный JSON-ответ для визуальной проверки выката кода."""
default_message = os.environ.get("DEFAULT_MESSAGE", "writer-default")
payload = event if isinstance(event, dict) else {}
message = payload.get("message", default_message)
source = payload.get("source", "event-writer")
now = datetime.now(timezone.utc).isoformat()
# response_tag удобно менять для демонстрации hot-update кода через terraform apply.
response_tag = "writer-v2"
return {
"ok": True,
"source": source,
"message": message,
"response_tag": response_tag,
"generated_at": now,
}