From 4a92e3f372caa1f8f249f9d9b5fc5d5efca510b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 9 May 2026 06:57:29 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20env=20vars=20=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=81=D1=8F=20=D0=B2=20=D0=B0=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20fission-console/env-vars=20(?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=B2=20spec.runtime)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit spec.runtime.container.env срезается CRD-схемой Fission. Хранение перенесено в аннотацию fission-console/env-vars (JSON-массив). Версия v1.3.73 --- console/deploy/console.yaml | 2 +- console/internal/api/function_crud.go | 44 +++++++++++---------------- console/ui/index.html | 4 +-- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml index 9ba2c3d..76deac0 100644 --- a/console/deploy/console.yaml +++ b/console/deploy/console.yaml @@ -55,7 +55,7 @@ spec: serviceAccountName: fission-console containers: - name: console - image: naeel/fission-console:v1.3.72 + image: naeel/fission-console:v1.3.73 imagePullPolicy: Always ports: - containerPort: 8090 diff --git a/console/internal/api/function_crud.go b/console/internal/api/function_crud.go index 4ac689a..2375de8 100644 --- a/console/internal/api/function_crud.go +++ b/console/internal/api/function_crud.go @@ -308,7 +308,7 @@ func (s *Server) handleGetFunctionEnvVars(w http.ResponseWriter, r *http.Request writeAnyJSON(w, http.StatusOK, map[string]any{"env_vars": envVars}) } -// handlePutFunctionEnvVars обновляет переменные окружения функции в .spec.runtime.container.env +// handlePutFunctionEnvVars обновляет переменные окружения функции в аннотации fission-console/env-vars (JSON) func (s *Server) handlePutFunctionEnvVars(w http.ResponseWriter, r *http.Request, name string) { ctx, cancel := context.WithTimeout(r.Context(), 10*time.Second) defer cancel() @@ -341,18 +341,10 @@ func (s *Server) handlePutFunctionEnvVars(w http.ResponseWriter, r *http.Request return } - // Формируем список [{name: ..., value: ...}] для .spec.runtime.container.env - envList := make([]any, 0, len(req.EnvVars)) - for _, ev := range req.EnvVars { - envList = append(envList, map[string]any{ - "name": ev["name"], - "value": ev["value"], - }) - } - - // Устанавливаем .spec.runtime.container.env - if err := unstructured.SetNestedSlice(fn.Object, envList, "spec", "runtime", "container", "env"); err != nil { - writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("set env vars: %v", err)) + // Сериализуем в JSON для аннотации + envJSON, err := json.Marshal(req.EnvVars) + if err != nil { + writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("marshal env vars: %v", err)) return } @@ -363,6 +355,7 @@ func (s *Server) handlePutFunctionEnvVars(w http.ResponseWriter, r *http.Request ann = map[string]string{} } ann[functionUpdatedAtAnnotation] = now + ann["fission-console/env-vars"] = string(envJSON) fn.SetAnnotations(ann) if _, err := s.dyn.Resource(fission.FunctionGVR).Namespace(ns).Update(ctx, fn, metav1.UpdateOptions{}); err != nil { @@ -373,23 +366,20 @@ func (s *Server) handlePutFunctionEnvVars(w http.ResponseWriter, r *http.Request writeAnyJSON(w, http.StatusOK, map[string]any{"updated": true, "count": len(req.EnvVars)}) } -// extractEnvVars читает .spec.runtime.container.env из Function CRD и возвращает [{name, value}, ...] +// extractEnvVars читает аннотацию fission-console/env-vars (JSON) из Function CRD +// Возвращает [{name, value}, ...] func extractEnvVars(fn *unstructured.Unstructured) []map[string]string { - raw, found, _ := unstructured.NestedSlice(fn.Object, "spec", "runtime", "container", "env") - if !found || len(raw) == 0 { + ann := fn.GetAnnotations() + if ann == nil { return []map[string]string{} } - result := make([]map[string]string, 0, len(raw)) - for _, item := range raw { - m, ok := item.(map[string]any) - if !ok { - continue - } - k, _ := m["name"].(string) - v, _ := m["value"].(string) - if k != "" { - result = append(result, map[string]string{"name": k, "value": v}) - } + raw := ann["fission-console/env-vars"] + if raw == "" { + return []map[string]string{} + } + var result []map[string]string + if err := json.Unmarshal([]byte(raw), &result); err != nil { + return []map[string]string{} } return result } diff --git a/console/ui/index.html b/console/ui/index.html index d162e79..9f009b1 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -102,7 +102,7 @@
NUBES
FISSION CONSOLE
-
v1.3.72
+
v1.3.73
@@ -509,7 +509,7 @@
- v1.3.72 + v1.3.73