From f2dcbcd56ae53f54fee4bab95236cbdb75476c59 Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Tue, 19 May 2026 10:33:36 +0100 Subject: [PATCH 1/3] feat: add per-function `vcpu` parameter --- go/models/function_config.go | 6 +++++- go/porcelain/deploy.go | 3 ++- go/porcelain/functions_manifest.go | 1 + swagger.yml | 8 +++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/go/models/function_config.go b/go/models/function_config.go index de7bf3b7..8f162f18 100644 --- a/go/models/function_config.go +++ b/go/models/function_config.go @@ -33,7 +33,7 @@ type FunctionConfig struct { // generator Generator string `json:"generator,omitempty"` - // The function's memory allocation in MB. + // The function's memory allocation in MB. Mutually exclusive with `vcpu`. // Memory int64 `json:"memory,omitempty"` @@ -48,6 +48,10 @@ type FunctionConfig struct { // traffic rules TrafficRules *TrafficRulesConfig `json:"traffic_rules,omitempty"` + + // Number of vCPUs to provision for the function. Allowed range is 0.5–2. + // + Vcpu float64 `json:"vcpu,omitempty"` } // Validate validates this function config diff --git a/go/porcelain/deploy.go b/go/porcelain/deploy.go index b79372d4..f421e501 100644 --- a/go/porcelain/deploy.go +++ b/go/porcelain/deploy.go @@ -840,7 +840,7 @@ func bundleFromManifest(ctx context.Context, manifestFile *os.File, observer Dep } } - hasConfig := function.DisplayName != "" || function.Generator != "" || len(routes) > 0 || len(excludedRoutes) > 0 || len(function.BuildData) > 0 || function.Priority != 0 || function.TrafficRules != nil || function.Timeout != 0 || len(function.EventSubscriptions) > 0 || function.Region != "" || function.Memory != 0 + hasConfig := function.DisplayName != "" || function.Generator != "" || len(routes) > 0 || len(excludedRoutes) > 0 || len(function.BuildData) > 0 || function.Priority != 0 || function.TrafficRules != nil || function.Timeout != 0 || len(function.EventSubscriptions) > 0 || function.Region != "" || function.Memory != 0 || function.Vcpu != 0 if hasConfig { cfg := models.FunctionConfig{ DisplayName: function.DisplayName, @@ -852,6 +852,7 @@ func bundleFromManifest(ctx context.Context, manifestFile *os.File, observer Dep BuildData: function.BuildData, Priority: int64(function.Priority), EventSubscriptions: function.EventSubscriptions, + Vcpu: function.Vcpu, } if function.TrafficRules != nil { diff --git a/go/porcelain/functions_manifest.go b/go/porcelain/functions_manifest.go index 93c50176..c773c1cc 100644 --- a/go/porcelain/functions_manifest.go +++ b/go/porcelain/functions_manifest.go @@ -27,6 +27,7 @@ type functionsManifestEntry struct { ExcludedRoutes []excludedFunctionRoute `json:"excludedRoutes"` Priority int `json:"priority"` TrafficRules *functionTrafficRules `json:"trafficRules"` + Vcpu float64 `json:"vcpu"` } type functionRoute struct { diff --git a/swagger.yml b/swagger.yml index 79c49995..659a46cc 100644 --- a/swagger.yml +++ b/swagger.yml @@ -5558,7 +5558,7 @@ definitions: memory: type: integer description: | - The function's memory allocation in MB. + The function's memory allocation in MB. Mutually exclusive with `vcpu`. routes: type: array items: @@ -5573,6 +5573,12 @@ definitions: type: string traffic_rules: $ref: '#/definitions/trafficRulesConfig' + vcpu: + type: number + format: float + description: | + Number of vCPUs to provision for the function. Allowed range is + 0.5–2. event_subscriptions: type: array items: From f2723cf59525b466c83ded5c68324f210ba94e51 Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Tue, 19 May 2026 10:54:29 +0100 Subject: [PATCH 2/3] update client --- go/models/function_config.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/go/models/function_config.go b/go/models/function_config.go index 8f162f18..48631ce7 100644 --- a/go/models/function_config.go +++ b/go/models/function_config.go @@ -49,9 +49,10 @@ type FunctionConfig struct { // traffic rules TrafficRules *TrafficRulesConfig `json:"traffic_rules,omitempty"` - // Number of vCPUs to provision for the function. Allowed range is 0.5–2. + // Number of vCPUs to provision for the function. Allowed range is + // 0.5–2. // - Vcpu float64 `json:"vcpu,omitempty"` + Vcpu float32 `json:"vcpu,omitempty"` } // Validate validates this function config From 5317c4269689da15b713f66151dc4e9a8b96b1f1 Mon Sep 17 00:00:00 2001 From: Netlify Bot Date: Tue, 19 May 2026 10:59:13 +0100 Subject: [PATCH 3/3] update type --- go/porcelain/functions_manifest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/porcelain/functions_manifest.go b/go/porcelain/functions_manifest.go index c773c1cc..a13bb1d6 100644 --- a/go/porcelain/functions_manifest.go +++ b/go/porcelain/functions_manifest.go @@ -27,7 +27,7 @@ type functionsManifestEntry struct { ExcludedRoutes []excludedFunctionRoute `json:"excludedRoutes"` Priority int `json:"priority"` TrafficRules *functionTrafficRules `json:"trafficRules"` - Vcpu float64 `json:"vcpu"` + Vcpu float32 `json:"vcpu"` } type functionRoute struct {