Batch 1: ok, echo, error, cpu, slow Batch 2: jsonout, recurse, bigdata, math, timestamp Batch 3: multiline, encoding, nested, memory, chain Tests: create, update (code_hash), idempotency, destroy, re-create All 15 functions verified via curl with JWT auth
310 lines
9.0 KiB
Terraform
310 lines
9.0 KiB
Terraform
terraform {
|
|
required_providers {
|
|
fission = {
|
|
source = "nail/fission"
|
|
version = "~> 0.1.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "fission" {
|
|
kubeconfig_path = "/home/naeel/.kube/config"
|
|
namespace = "default"
|
|
}
|
|
|
|
resource "fission_environment" "python" {
|
|
name = "tf-auto-env"
|
|
image = "ghcr.io/fission/python-env"
|
|
version = 3
|
|
}
|
|
|
|
# ok function
|
|
resource "fission_package" "ok" {
|
|
name = "tf-auto-ok-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/ok"
|
|
code_hash = "v2"
|
|
}
|
|
resource "fission_function" "ok" {
|
|
name = "tf-auto-ok-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.ok.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "ok" {
|
|
name = "tf-auto-ok-route"
|
|
function = fission_function.ok.name
|
|
url = "/auto/ok"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# echo function
|
|
resource "fission_package" "echo" {
|
|
name = "tf-auto-echo-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/echo"
|
|
}
|
|
resource "fission_function" "echo" {
|
|
name = "tf-auto-echo-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.echo.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "echo" {
|
|
name = "tf-auto-echo-route"
|
|
function = fission_function.echo.name
|
|
url = "/auto/echo"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# error function
|
|
resource "fission_package" "error" {
|
|
name = "tf-auto-error-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/error"
|
|
}
|
|
resource "fission_function" "error" {
|
|
name = "tf-auto-error-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.error.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "error" {
|
|
name = "tf-auto-error-route"
|
|
function = fission_function.error.name
|
|
url = "/auto/error"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# cpu function
|
|
resource "fission_package" "cpu" {
|
|
name = "tf-auto-cpu-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/cpu"
|
|
}
|
|
resource "fission_function" "cpu" {
|
|
name = "tf-auto-cpu-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.cpu.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "cpu" {
|
|
name = "tf-auto-cpu-route"
|
|
function = fission_function.cpu.name
|
|
url = "/auto/cpu"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# slow function
|
|
resource "fission_package" "slow" {
|
|
name = "tf-auto-slow-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/slow"
|
|
}
|
|
resource "fission_function" "slow" {
|
|
name = "tf-auto-slow-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.slow.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "slow" {
|
|
name = "tf-auto-slow-route"
|
|
function = fission_function.slow.name
|
|
url = "/auto/slow"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# --- BATCH 2 ---
|
|
|
|
# jsonout: возвращает сложный JSON
|
|
resource "fission_package" "jsonout" {
|
|
name = "tf-auto-jsonout-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/jsonout"
|
|
}
|
|
resource "fission_function" "jsonout" {
|
|
name = "tf-auto-jsonout-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.jsonout.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "jsonout" {
|
|
name = "tf-auto-jsonout-route"
|
|
function = fission_function.jsonout.name
|
|
url = "/auto/jsonout"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# recurse: рекурсивный Фибоначчи (нагрузка на стек)
|
|
resource "fission_package" "recurse" {
|
|
name = "tf-auto-recurse-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/recurse"
|
|
}
|
|
resource "fission_function" "recurse" {
|
|
name = "tf-auto-recurse-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.recurse.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "recurse" {
|
|
name = "tf-auto-recurse-route"
|
|
function = fission_function.recurse.name
|
|
url = "/auto/recurse"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# bigdata: большой ответ (~45KB текста)
|
|
resource "fission_package" "bigdata" {
|
|
name = "tf-auto-bigdata-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/bigdata"
|
|
}
|
|
resource "fission_function" "bigdata" {
|
|
name = "tf-auto-bigdata-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.bigdata.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "bigdata" {
|
|
name = "tf-auto-bigdata-route"
|
|
function = fission_function.bigdata.name
|
|
url = "/auto/bigdata"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# math: математические вычисления
|
|
resource "fission_package" "math" {
|
|
name = "tf-auto-math-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/math"
|
|
}
|
|
resource "fission_function" "math" {
|
|
name = "tf-auto-math-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.math.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "math" {
|
|
name = "tf-auto-math-route"
|
|
function = fission_function.math.name
|
|
url = "/auto/math"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# timestamp: текущее время UTC
|
|
resource "fission_package" "timestamp" {
|
|
name = "tf-auto-timestamp-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/timestamp"
|
|
}
|
|
resource "fission_function" "timestamp" {
|
|
name = "tf-auto-timestamp-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.timestamp.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "timestamp" {
|
|
name = "tf-auto-timestamp-route"
|
|
function = fission_function.timestamp.name
|
|
url = "/auto/timestamp"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# --- BATCH 3 ---
|
|
|
|
# multiline: многострочный вывод с кириллицей
|
|
resource "fission_package" "multiline" {
|
|
name = "tf-auto-multiline-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/multiline"
|
|
}
|
|
resource "fission_function" "multiline" {
|
|
name = "tf-auto-multiline-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.multiline.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "multiline" {
|
|
name = "tf-auto-multiline-route"
|
|
function = fission_function.multiline.name
|
|
url = "/auto/multiline"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# encoding: unicode/emoji/кириллица/китайский
|
|
resource "fission_package" "encoding" {
|
|
name = "tf-auto-encoding-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/encoding"
|
|
}
|
|
resource "fission_function" "encoding" {
|
|
name = "tf-auto-encoding-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.encoding.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "encoding" {
|
|
name = "tf-auto-encoding-route"
|
|
function = fission_function.encoding.name
|
|
url = "/auto/encoding"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# nested: вложенные try/except
|
|
resource "fission_package" "nested" {
|
|
name = "tf-auto-nested-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/nested"
|
|
}
|
|
resource "fission_function" "nested" {
|
|
name = "tf-auto-nested-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.nested.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "nested" {
|
|
name = "tf-auto-nested-route"
|
|
function = fission_function.nested.name
|
|
url = "/auto/nested"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# memory: аллокация памяти (500k элементов)
|
|
resource "fission_package" "memory" {
|
|
name = "tf-auto-memory-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/memory"
|
|
}
|
|
resource "fission_function" "memory" {
|
|
name = "tf-auto-memory-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.memory.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "memory" {
|
|
name = "tf-auto-memory-route"
|
|
function = fission_function.memory.name
|
|
url = "/auto/memory"
|
|
methods = ["GET"]
|
|
}
|
|
|
|
# chain: хеш-цепочка (имитация блокчейна)
|
|
resource "fission_package" "chain" {
|
|
name = "tf-auto-chain-pkg"
|
|
environment = fission_environment.python.name
|
|
source_dir = "${path.module}/code/chain"
|
|
}
|
|
resource "fission_function" "chain" {
|
|
name = "tf-auto-chain-fn"
|
|
environment = fission_environment.python.name
|
|
package_name = fission_package.chain.name
|
|
entrypoint = "main.main"
|
|
}
|
|
resource "fission_http_trigger" "chain" {
|
|
name = "tf-auto-chain-route"
|
|
function = fission_function.chain.name
|
|
url = "/auto/chain"
|
|
methods = ["GET"]
|
|
}
|