snapshot before legacy cleanup
This commit is contained in:
@@ -35,6 +35,19 @@ var validFuncName = regexp.MustCompile(`^[a-z0-9]([a-z0-9-]*[a-z0-9])?$`)
|
||||
// Выше — не имеет смысла для inline функции; лучше использовать Package с URL.
|
||||
const maxCodeSize = 1 << 20
|
||||
|
||||
func buildDeployArchive(lang, code string) ([]byte, error) {
|
||||
switch lang {
|
||||
case "nodejs":
|
||||
return runtime.BuildJSDeployZip(code)
|
||||
case "php":
|
||||
return runtime.BuildScriptZip(code, "main.php")
|
||||
case "ruby":
|
||||
return runtime.BuildScriptZip(code, "handler.rb")
|
||||
default:
|
||||
return []byte(code), nil
|
||||
}
|
||||
}
|
||||
|
||||
// handleFunctionsRoot обрабатывает запросы к /console/api/functions без имени функции.
|
||||
// GET → список всех функций, POST → создать новую.
|
||||
func (s *Server) handleFunctionsRoot(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -212,17 +225,10 @@ func (s *Server) handleCreateFunction(w http.ResponseWriter, r *http.Request) {
|
||||
"buildcommand": "build",
|
||||
}
|
||||
} else {
|
||||
var deployBytes []byte
|
||||
if req.Language == "nodejs" {
|
||||
zipBytes, zipErr := runtime.BuildJSDeployZip(req.Code)
|
||||
if zipErr != nil {
|
||||
writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("build nodejs archive: %v", zipErr))
|
||||
return
|
||||
}
|
||||
deployBytes = zipBytes
|
||||
} else {
|
||||
// Python, PHP, Ruby, Perl — код передаётся как есть в deployment.literal
|
||||
deployBytes = []byte(req.Code)
|
||||
deployBytes, archiveErr := buildDeployArchive(req.Language, req.Code)
|
||||
if archiveErr != nil {
|
||||
writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("build %s archive: %v", req.Language, archiveErr))
|
||||
return
|
||||
}
|
||||
pkgSpec = map[string]any{
|
||||
"deployment": map[string]any{"type": "literal", "literal": base64.StdEncoding.EncodeToString(deployBytes)},
|
||||
@@ -429,16 +435,10 @@ func (s *Server) handleUpdateFunctionCode(w http.ResponseWriter, r *http.Request
|
||||
|
||||
// Определяем язык из аннотации — нужен для правильной упаковки
|
||||
lang, _, _ := unstructured.NestedString(fn.Object, "metadata", "annotations", "fission-console/language")
|
||||
var deployBytes []byte
|
||||
if lang == "nodejs" {
|
||||
zipBytes, zipErr := runtime.BuildJSDeployZip(req.Code)
|
||||
if zipErr != nil {
|
||||
writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("build nodejs archive: %v", zipErr))
|
||||
return
|
||||
}
|
||||
deployBytes = zipBytes
|
||||
} else {
|
||||
deployBytes = []byte(req.Code)
|
||||
deployBytes, archiveErr := buildDeployArchive(lang, req.Code)
|
||||
if archiveErr != nil {
|
||||
writeJSONError(w, http.StatusInternalServerError, fmt.Sprintf("build %s archive: %v", lang, archiveErr))
|
||||
return
|
||||
}
|
||||
|
||||
literal := base64.StdEncoding.EncodeToString(deployBytes)
|
||||
|
||||
Reference in New Issue
Block a user