From d433af73dbc6245b861e9c00b67dd2ececb79c30 Mon Sep 17 00:00:00 2001 From: Aristides Neto Date: Fri, 21 Feb 2025 17:53:33 -0300 Subject: [PATCH 1/3] feat: Add cpu burst factory attribute to Tsuru app resource --- internal/provider/resource_tsuru_app.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/provider/resource_tsuru_app.go b/internal/provider/resource_tsuru_app.go index 8c6b936..d7d8029 100644 --- a/internal/provider/resource_tsuru_app.go +++ b/internal/provider/resource_tsuru_app.go @@ -52,6 +52,11 @@ func resourceTsuruApplication() *schema.Resource { Description: "Plan", Required: true, }, + "burst_factory": { + Type: schema.TypeFloat, + Description: "CPU burst factory override", + Optional: true, + }, "team_owner": { Type: schema.TypeString, Description: "Application owner", @@ -283,6 +288,11 @@ func resourceTsuruApplicationUpdate(ctx context.Context, d *schema.ResourceData, Tags: tags, } + if cpu_burst, ok := d.GetOk("burst_factory"); ok { + cpuBurstValue := cpu_burst.(float64) + app.Planoverride.CpuBurst = &cpuBurstValue + } + if d.HasChange("metadata") { old, new := d.GetChange("metadata") oldMetadata := metadataFromResourceData(old) @@ -371,6 +381,10 @@ func resourceTsuruApplicationRead(ctx context.Context, d *schema.ResourceData, m d.Set("team_owner", app.TeamOwner) d.Set("cluster", app.Cluster) + if app.Plan.Override.CpuBurst != nil { + d.Set("burst_factory", app.Plan.Override.CpuBurst) + } + if app.Description != "" { d.Set("description", app.Description) } From a6fb19dca33a9dd7cd1dc02d7cfc32b7c2765ce5 Mon Sep 17 00:00:00 2001 From: Aristides Neto Date: Fri, 21 Feb 2025 17:54:48 -0300 Subject: [PATCH 2/3] test: Add accept tests for cpu burst factory --- internal/provider/resource_tsuru_app_test.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/provider/resource_tsuru_app_test.go b/internal/provider/resource_tsuru_app_test.go index ac7a887..bb2ed24 100644 --- a/internal/provider/resource_tsuru_app_test.go +++ b/internal/provider/resource_tsuru_app_test.go @@ -55,12 +55,18 @@ func TestAccResourceTsuruApp(t *testing.T) { } if iterationCount == 1 { + cpuBurstValue := 1.5 app := &tsuru.App{ Name: name, Description: "my app description", TeamOwner: "my-team", Platform: "python", - Plan: tsuru.Plan{Name: "c2m4"}, + Plan: tsuru.Plan{ + Name: "c2m4", + Override: tsuru.PlanOverride{ + CpuBurst: &cpuBurstValue, + }, + }, Cluster: "my-cluster-01", Pool: "prod", Provisioner: "kubernetes", @@ -241,6 +247,7 @@ func TestAccResourceTsuruApp(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "description", "my app description"), resource.TestCheckResourceAttr(resourceName, "platform", "python"), resource.TestCheckResourceAttr(resourceName, "plan", "c2m4"), + resource.TestCheckResourceAttr(resourceName, "burst_factory", "1.5"), resource.TestCheckResourceAttr(resourceName, "team_owner", "my-team"), resource.TestCheckResourceAttr(resourceName, "pool", "prod"), resource.TestCheckResourceAttr(resourceName, "tags.0", "tagA"), @@ -277,6 +284,7 @@ func testAccResourceTsuruApp_basic() string { description = "my app description" platform = "python" plan = "c2m4" + burst_factory = "1.5" team_owner = "my-team" pool = "prod" tags = ["tagA", "tagB"] From 26f657727c9a26a8d5fe59ccfca1fcbe57e4c081 Mon Sep 17 00:00:00 2001 From: Aristides Neto Date: Fri, 21 Feb 2025 18:08:41 -0300 Subject: [PATCH 3/3] feat: rename cpu burst field --- internal/provider/resource_tsuru_app.go | 6 +++--- internal/provider/resource_tsuru_app_test.go | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/provider/resource_tsuru_app.go b/internal/provider/resource_tsuru_app.go index d7d8029..50544fe 100644 --- a/internal/provider/resource_tsuru_app.go +++ b/internal/provider/resource_tsuru_app.go @@ -52,7 +52,7 @@ func resourceTsuruApplication() *schema.Resource { Description: "Plan", Required: true, }, - "burst_factory": { + "custom_cpu_burst": { Type: schema.TypeFloat, Description: "CPU burst factory override", Optional: true, @@ -288,7 +288,7 @@ func resourceTsuruApplicationUpdate(ctx context.Context, d *schema.ResourceData, Tags: tags, } - if cpu_burst, ok := d.GetOk("burst_factory"); ok { + if cpu_burst, ok := d.GetOk("custom_cpu_burst"); ok { cpuBurstValue := cpu_burst.(float64) app.Planoverride.CpuBurst = &cpuBurstValue } @@ -382,7 +382,7 @@ func resourceTsuruApplicationRead(ctx context.Context, d *schema.ResourceData, m d.Set("cluster", app.Cluster) if app.Plan.Override.CpuBurst != nil { - d.Set("burst_factory", app.Plan.Override.CpuBurst) + d.Set("custom_cpu_burst", app.Plan.Override.CpuBurst) } if app.Description != "" { diff --git a/internal/provider/resource_tsuru_app_test.go b/internal/provider/resource_tsuru_app_test.go index bb2ed24..231e346 100644 --- a/internal/provider/resource_tsuru_app_test.go +++ b/internal/provider/resource_tsuru_app_test.go @@ -247,7 +247,7 @@ func TestAccResourceTsuruApp(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "description", "my app description"), resource.TestCheckResourceAttr(resourceName, "platform", "python"), resource.TestCheckResourceAttr(resourceName, "plan", "c2m4"), - resource.TestCheckResourceAttr(resourceName, "burst_factory", "1.5"), + resource.TestCheckResourceAttr(resourceName, "custom_cpu_burst", "1.5"), resource.TestCheckResourceAttr(resourceName, "team_owner", "my-team"), resource.TestCheckResourceAttr(resourceName, "pool", "prod"), resource.TestCheckResourceAttr(resourceName, "tags.0", "tagA"), @@ -284,7 +284,7 @@ func testAccResourceTsuruApp_basic() string { description = "my app description" platform = "python" plan = "c2m4" - burst_factory = "1.5" + custom_cpu_burst = "1.5" team_owner = "my-team" pool = "prod" tags = ["tagA", "tagB"]