From 9d223445ae58fe0c8cc7bdf16bf89be2974e2cfd Mon Sep 17 00:00:00 2001 From: SwiftEngineer Date: Wed, 22 Jun 2022 14:58:03 -0700 Subject: [PATCH] add workspace limit admin setting --- admin_organization.go | 2 ++ admin_organization_integration_test.go | 15 ++++++++++++--- docs/TESTS.md | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/admin_organization.go b/admin_organization.go index c43013743..600e68315 100644 --- a/admin_organization.go +++ b/admin_organization.go @@ -50,6 +50,7 @@ type AdminOrganization struct { TerraformBuildWorkerApplyTimeout string `jsonapi:"attr,terraform-build-worker-apply-timeout"` TerraformBuildWorkerPlanTimeout string `jsonapi:"attr,terraform-build-worker-plan-timeout"` TerraformWorkerSudoEnabled bool `jsonapi:"attr,terraform-worker-sudo-enabled"` + WorkspaceLimit *int `jsonapi:"attr,workspace-limit"` // Relations Owners []*User `jsonapi:"relation,owners"` @@ -64,6 +65,7 @@ type AdminOrganizationUpdateOptions struct { TerraformBuildWorkerApplyTimeout *string `jsonapi:"attr,terraform-build-worker-apply-timeout,omitempty"` TerraformBuildWorkerPlanTimeout *string `jsonapi:"attr,terraform-build-worker-plan-timeout,omitempty"` TerraformWorkerSudoEnabled bool `jsonapi:"attr,terraform-worker-sudo-enabled,omitempty"` + WorkspaceLimit *int `jsonapi:"attr,workspace-limit,omitempty"` } // AdminOrganizationList represents a list of organizations via Admin API. diff --git a/admin_organization_integration_test.go b/admin_organization_integration_test.go index bd326d94d..15ad54e69 100644 --- a/admin_organization_integration_test.go +++ b/admin_organization_integration_test.go @@ -106,6 +106,7 @@ func TestAdminOrganizations_Read(t *testing.T) { assert.NotNilf(t, adminOrg.NotificationEmail, "NotificationEmail is not nil") assert.NotNilf(t, adminOrg.SsoEnabled, "SsoEnabled is not nil") assert.NotNilf(t, adminOrg.TerraformWorkerSudoEnabled, "TerraformWorkerSudoEnabledis not nil") + assert.Nilf(t, adminOrg.WorkspaceLimit, "WorkspaceLimit is nil") }) } @@ -238,39 +239,47 @@ func TestAdminOrganizations_Update(t *testing.T) { assert.NoError(t, err) assert.Equal(t, accessBetaTools, adminOrg.AccessBetaTools) - assert.Equal(t, globalModuleSharing, adminOrg.GlobalModuleSharing) + assert.Equal(t, adminOrg.GlobalModuleSharing, &globalModuleSharing) assert.Equal(t, isDisabled, adminOrg.IsDisabled) assert.Equal(t, terraformBuildWorkerApplyTimeout, adminOrg.TerraformBuildWorkerApplyTimeout) assert.Equal(t, terraformBuildWorkerPlanTimeout, adminOrg.TerraformBuildWorkerPlanTimeout) assert.Equal(t, terraformWorkerSudoEnabled, adminOrg.TerraformWorkerSudoEnabled) + assert.Nil(t, adminOrg.WorkspaceLimit, "default workspace limit should be nil") isDisabled = true globalModuleSharing = true + workspaceLimit := 42 opts = AdminOrganizationUpdateOptions{ GlobalModuleSharing: &globalModuleSharing, IsDisabled: &isDisabled, + WorkspaceLimit: &workspaceLimit, } adminOrg, err = client.Admin.Organizations.Update(ctx, org.Name, opts) assert.NoError(t, err) assert.NotNilf(t, adminOrg, "Org returned as nil when it shouldn't be.") - assert.Equal(t, adminOrg.GlobalModuleSharing, globalModuleSharing) + assert.Equal(t, adminOrg.GlobalModuleSharing, &globalModuleSharing) assert.Equal(t, adminOrg.IsDisabled, isDisabled) + assert.Equal(t, &workspaceLimit, adminOrg.WorkspaceLimit) globalModuleSharing = false isDisabled = false + workspaceLimit = 0 opts = AdminOrganizationUpdateOptions{ GlobalModuleSharing: &globalModuleSharing, IsDisabled: &isDisabled, + WorkspaceLimit: &workspaceLimit, } adminOrg, err = client.Admin.Organizations.Update(ctx, org.Name, opts) assert.NoError(t, err) assert.NotNilf(t, adminOrg, "Org returned as nil when it shouldn't be.") - assert.Equal(t, adminOrg.GlobalModuleSharing, globalModuleSharing) + assert.Equal(t, &globalModuleSharing, adminOrg.GlobalModuleSharing) assert.Equal(t, adminOrg.IsDisabled, isDisabled) + + assert.Equal(t, &workspaceLimit, adminOrg.WorkspaceLimit) }) } diff --git a/docs/TESTS.md b/docs/TESTS.md index b1205cc87..57df55c20 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -12,7 +12,7 @@ Your registry module repository will need to be a [valid module](https://www.ter It will need the following: 1. To be named `terraform--` 1. At least one valid SemVer tag in the format `x.y.z` -[terraform-random-module](ttps://github.com/caseylang/terraform-random-module) is a good example repo. +[terraform-random-module](https://github.com/caseylang/terraform-random-module) is a good example repo. ## 2. Set up environment variables (ENVVARS)