From 0097bdde11f760a6a7685aaaba94304dac7b75c5 Mon Sep 17 00:00:00 2001 From: Julien Duchesne <julien.duchesne@grafana.com> Date: Tue, 22 Nov 2022 07:29:47 -0500 Subject: [PATCH] Allow creating an organization with many users (#724) * Allow creating an organization with many users Currently, we're limited by the pagination (1000 by default) * Fix loop * 1024 max * oops * Fix the test * oops * Replace the library * New version * Update client version * update client again * go mod update --- go.mod | 2 +- go.sum | 4 +- grafana/resource_organization_test.go | 55 +++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0449cc2aa..3d2776541 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.18 require ( github.com/Masterminds/semver/v3 v3.1.1 github.com/grafana/amixr-api-go-client v0.0.5 - github.com/grafana/grafana-api-golang-client v0.13.1 + github.com/grafana/grafana-api-golang-client v0.14.0 github.com/grafana/machine-learning-go-client v0.2.0 github.com/grafana/synthetic-monitoring-agent v0.11.0 github.com/grafana/synthetic-monitoring-api-go-client v0.6.3 diff --git a/go.sum b/go.sum index 1351d32a2..942ab13e0 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grafana/amixr-api-go-client v0.0.5 h1:jqmljnd5FozuOsCNuyhZVpooxmj0BW9MmeLA7PaLK6U= github.com/grafana/amixr-api-go-client v0.0.5/go.mod h1:N6x26XUrM5zGtK5zL5vNJnAn2JFMxLFPPLTw/6pDkFE= -github.com/grafana/grafana-api-golang-client v0.13.1 h1:a5R8bIwL98xd79zFTQnYgpva3ns7Nm5/DnVAWYBdWVk= -github.com/grafana/grafana-api-golang-client v0.13.1/go.mod h1:24W29gPe9yl0/3A9X624TPkAOR8DpHno490cPwnkv8E= +github.com/grafana/grafana-api-golang-client v0.14.0 h1:Jo2oZ85Y58zM7cOzQFxDfKopE3E6oyujU2KCeu7iSFA= +github.com/grafana/grafana-api-golang-client v0.14.0/go.mod h1:24W29gPe9yl0/3A9X624TPkAOR8DpHno490cPwnkv8E= github.com/grafana/machine-learning-go-client v0.2.0 h1:5JgfJn5Q72D0jZlXnM0gZ9lV4Q4zzq9X0GVfPu8Vxis= github.com/grafana/machine-learning-go-client v0.2.0/go.mod h1:QFfZz8NkqVF8++skjkKQXJEZfpCYd8S0yTWJUpsLLTA= github.com/grafana/synthetic-monitoring-agent v0.11.0 h1:B+JAiBqsKx8074A2cVdXG2+pmn5mCkr/Z55E7A+4XTc= diff --git a/grafana/resource_organization_test.go b/grafana/resource_organization_test.go index b1e71a571..ae2fbfef4 100644 --- a/grafana/resource_organization_test.go +++ b/grafana/resource_organization_test.go @@ -130,6 +130,32 @@ func TestAccOrganization_users(t *testing.T) { }) } +func TestAccOrganization_createManyUsers(t *testing.T) { + CheckOSSTestsEnabled(t) + + var org gapi.Org + + resource.Test(t, resource.TestCase{ + ProviderFactories: testAccProviderFactories, + CheckDestroy: testAccOrganizationCheckDestroy(&org), + Steps: []resource.TestStep{ + {Config: testAccOrganizationConfig_usersCreateMany_1}, + { + Config: testAccOrganizationConfig_usersCreateMany_2, + Check: resource.ComposeTestCheckFunc( + testAccOrganizationCheckExists("grafana_organization.test", &org), + resource.TestCheckResourceAttr( + "grafana_organization.test", "name", "terraform-acc-test", + ), + resource.TestCheckResourceAttr( + "grafana_organization.test", "admins.#", "1500", + ), + ), + }, + }, + }) +} + func TestAccOrganization_defaultAdmin(t *testing.T) { CheckOSSTestsEnabled(t) @@ -353,3 +379,32 @@ resource "grafana_organization" "test" { admins = [] } ` + +const testAccOrganizationConfig_usersCreateMany_1 = ` +resource "grafana_user" "users" { + count = 1500 + + name = "user-${count.index}" + email = "user-${count.index}@example.com" + login = "user-${count.index}@example.com" + password = "password" +} +` + +const testAccOrganizationConfig_usersCreateMany_2 = ` +resource "grafana_user" "users" { + count = 1500 + + name = "user-${count.index}" + email = "user-${count.index}@example.com" + login = "user-${count.index}@example.com" + password = "password" +} + +resource "grafana_organization" "test" { + name = "terraform-acc-test" + admin_user = "admin" + create_users = false + admins = [ for user in grafana_user.users : user.email ] +} +`