fix+docs: FunctionJob label bugfix, job ErrAlreadyExists, python str→text/plain, operator.yaml v0.1.33, progress.md
- controllers/functionjob_controller.go: - PodTemplate labels: functionjob=, function= (k8s 1.27+ удалил job-name=) - getJobPodOutput принимает labelSelector вместо jobName - захват stderr при Failed job; truncateForStatus() helper - terraform/provider/internal/client/client.go: ErrJobAlreadyExists (409 Conflict) - terraform/provider/internal/resources/job_resource.go: при конфликте создания — читаем существующий job - runtimes/python3.11/server.py: str return → text/plain - internal/builder/context.go: python runtime base image → v0.1.3 - deployments/k8s/operator.yaml: image → v0.1.33 - doc/progress.md: добавлены секции FunctionJob bugfix, str→text/plain, web-console v0.2.0
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// 2026-03-11
|
||||
// 2026-03-17 12:20
|
||||
// client.go — HTTP-клиент для REST API sless оператора.
|
||||
// Изолирован от terraform-plugin-framework — зависит только от stdlib и net/http.
|
||||
// Все методы принимают ctx для правильной работы с таймаутами terraform.
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"mime/multipart"
|
||||
@@ -44,6 +45,9 @@ type Client struct {
|
||||
Namespace string
|
||||
}
|
||||
|
||||
// ErrJobAlreadyExists возвращается при попытке создать FunctionJob с уже существующим именем.
|
||||
var ErrJobAlreadyExists = errors.New("job already exists")
|
||||
|
||||
// New создаёт клиент.
|
||||
// - endpoint — базовый URL оператора (без trailing slash), например "https://sless-api.kube5s.ru"
|
||||
// - token — Bearer JWT-токен облака
|
||||
@@ -456,6 +460,9 @@ func (c *Client) CreateJob(ctx context.Context, ns string, req JobRequest) (*Job
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusCreated {
|
||||
body, _ := io.ReadAll(resp.Body)
|
||||
if resp.StatusCode == http.StatusConflict {
|
||||
return nil, fmt.Errorf("%w: %s", ErrJobAlreadyExists, strings.TrimSpace(string(body)))
|
||||
}
|
||||
return nil, fmt.Errorf("create job: status %d: %s", resp.StatusCode, body)
|
||||
}
|
||||
var j JobResponse
|
||||
|
||||
Reference in New Issue
Block a user