Skip to content

Commit 2662f17

Browse files
Remove legacy cost center resources
1 parent a014606 commit 2662f17

12 files changed

Lines changed: 401 additions & 622 deletions

examples/cost_centers/main.tf

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,8 @@ variable "repositories" {
4848
resource "github_enterprise_cost_center" "example" {
4949
enterprise_slug = var.enterprise_slug
5050
name = var.cost_center_name
51-
}
52-
53-
# Authoritative assignments: Terraform will add/remove to match these lists.
54-
resource "github_enterprise_cost_center_resources" "example" {
55-
enterprise_slug = var.enterprise_slug
56-
cost_center_id = github_enterprise_cost_center.example.id
5751

52+
# Authoritative assignments: Terraform will add/remove to match these lists.
5853
users = var.users
5954
organizations = var.organizations
6055
repositories = var.repositories
@@ -63,8 +58,6 @@ resource "github_enterprise_cost_center_resources" "example" {
6358
data "github_enterprise_cost_center" "by_id" {
6459
enterprise_slug = var.enterprise_slug
6560
cost_center_id = github_enterprise_cost_center.example.id
66-
67-
depends_on = [github_enterprise_cost_center_resources.example]
6861
}
6962

7063
data "github_enterprise_cost_centers" "active" {
@@ -87,17 +80,20 @@ output "cost_center" {
8780
output "cost_center_resources" {
8881
description = "Effective assignments (read from API)"
8982
value = {
90-
users = sort(tolist(github_enterprise_cost_center_resources.example.users))
91-
organizations = sort(tolist(github_enterprise_cost_center_resources.example.organizations))
92-
repositories = sort(tolist(github_enterprise_cost_center_resources.example.repositories))
83+
users = sort(tolist(github_enterprise_cost_center.example.users))
84+
organizations = sort(tolist(github_enterprise_cost_center.example.organizations))
85+
repositories = sort(tolist(github_enterprise_cost_center.example.repositories))
9386
}
9487
}
9588

9689
output "cost_center_from_data_source" {
9790
description = "Cost center fetched by data source"
9891
value = {
99-
id = data.github_enterprise_cost_center.by_id.cost_center_id
100-
name = data.github_enterprise_cost_center.by_id.name
101-
state = data.github_enterprise_cost_center.by_id.state
92+
id = data.github_enterprise_cost_center.by_id.cost_center_id
93+
name = data.github_enterprise_cost_center.by_id.name
94+
state = data.github_enterprise_cost_center.by_id.state
95+
users = sort(tolist(data.github_enterprise_cost_center.by_id.users))
96+
organizations = sort(tolist(data.github_enterprise_cost_center.by_id.organizations))
97+
repositories = sort(tolist(data.github_enterprise_cost_center.by_id.repositories))
10298
}
10399
}

github/data_source_github_enterprise_cost_center.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package github
33
import (
44
"context"
55
"fmt"
6+
"sort"
67
"strings"
78

89
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -39,6 +40,24 @@ func dataSourceGithubEnterpriseCostCenter() *schema.Resource {
3940
Computed: true,
4041
Description: "The Azure subscription associated with the cost center.",
4142
},
43+
"users": {
44+
Type: schema.TypeSet,
45+
Computed: true,
46+
Elem: &schema.Schema{Type: schema.TypeString},
47+
Description: "The usernames assigned to this cost center.",
48+
},
49+
"organizations": {
50+
Type: schema.TypeSet,
51+
Computed: true,
52+
Elem: &schema.Schema{Type: schema.TypeString},
53+
Description: "The organization logins assigned to this cost center.",
54+
},
55+
"repositories": {
56+
Type: schema.TypeSet,
57+
Computed: true,
58+
Elem: &schema.Schema{Type: schema.TypeString},
59+
Description: "The repositories (full name) assigned to this cost center.",
60+
},
4261
"resources": {
4362
Type: schema.TypeList,
4463
Computed: true,
@@ -90,5 +109,13 @@ func dataSourceGithubEnterpriseCostCenterRead(ctx context.Context, d *schema.Res
90109
}
91110
_ = d.Set("resources", resources)
92111

112+
users, organizations, repositories := enterpriseCostCenterSplitResources(cc.Resources)
113+
sort.Strings(users)
114+
sort.Strings(organizations)
115+
sort.Strings(repositories)
116+
_ = d.Set("users", stringSliceToAnySlice(users))
117+
_ = d.Set("organizations", stringSliceToAnySlice(organizations))
118+
_ = d.Set("repositories", stringSliceToAnySlice(repositories))
119+
93120
return nil
94121
}

github/data_source_github_enterprise_cost_center_test.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package github
22

33
import (
44
"fmt"
5+
"os"
56
"testing"
67

78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
@@ -17,6 +18,26 @@ func TestAccGithubEnterpriseCostCenterDataSource(t *testing.T) {
1718
if testEnterprise == "" {
1819
t.Skip("Skipping because `ENTERPRISE_SLUG` is not set")
1920
}
21+
testEnterpriseCostCenterOrganization := os.Getenv("ENTERPRISE_TEST_ORGANIZATION")
22+
testEnterpriseCostCenterRepository := os.Getenv("ENTERPRISE_TEST_REPOSITORY")
23+
testEnterpriseCostCenterUsers := os.Getenv("ENTERPRISE_TEST_USERS")
24+
25+
if testEnterpriseCostCenterOrganization == "" {
26+
t.Skip("Skipping because `ENTERPRISE_TEST_ORGANIZATION` is not set")
27+
}
28+
if testEnterpriseCostCenterRepository == "" {
29+
t.Skip("Skipping because `ENTERPRISE_TEST_REPOSITORY` is not set")
30+
}
31+
if testEnterpriseCostCenterUsers == "" {
32+
t.Skip("Skipping because `ENTERPRISE_TEST_USERS` is not set")
33+
}
34+
35+
users := splitCommaSeparated(testEnterpriseCostCenterUsers)
36+
if len(users) == 0 {
37+
t.Skip("Skipping because `ENTERPRISE_TEST_USERS` must contain at least one username")
38+
}
39+
40+
userList := fmt.Sprintf("%q", users[0])
2041

2142
config := fmt.Sprintf(`
2243
data "github_enterprise" "enterprise" {
@@ -26,18 +47,28 @@ func TestAccGithubEnterpriseCostCenterDataSource(t *testing.T) {
2647
resource "github_enterprise_cost_center" "test" {
2748
enterprise_slug = data.github_enterprise.enterprise.slug
2849
name = "tf-acc-test-%s"
50+
51+
users = [%s]
52+
organizations = [%q]
53+
repositories = [%q]
2954
}
3055
3156
data "github_enterprise_cost_center" "test" {
3257
enterprise_slug = data.github_enterprise.enterprise.slug
3358
cost_center_id = github_enterprise_cost_center.test.id
3459
}
35-
`, testEnterprise, randomID)
60+
`, testEnterprise, randomID, userList, testEnterpriseCostCenterOrganization, testEnterpriseCostCenterRepository)
3661

3762
check := resource.ComposeTestCheckFunc(
3863
resource.TestCheckResourceAttrPair("data.github_enterprise_cost_center.test", "cost_center_id", "github_enterprise_cost_center.test", "id"),
3964
resource.TestCheckResourceAttrPair("data.github_enterprise_cost_center.test", "name", "github_enterprise_cost_center.test", "name"),
4065
resource.TestCheckResourceAttr("data.github_enterprise_cost_center.test", "state", "active"),
66+
resource.TestCheckResourceAttr("data.github_enterprise_cost_center.test", "organizations.#", "1"),
67+
resource.TestCheckTypeSetElemAttr("data.github_enterprise_cost_center.test", "organizations.*", testEnterpriseCostCenterOrganization),
68+
resource.TestCheckResourceAttr("data.github_enterprise_cost_center.test", "repositories.#", "1"),
69+
resource.TestCheckTypeSetElemAttr("data.github_enterprise_cost_center.test", "repositories.*", testEnterpriseCostCenterRepository),
70+
resource.TestCheckResourceAttr("data.github_enterprise_cost_center.test", "users.#", "1"),
71+
resource.TestCheckTypeSetElemAttr("data.github_enterprise_cost_center.test", "users.*", users[0]),
4172
)
4273

4374
resource.Test(t, resource.TestCase{

github/provider.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ func Provider() *schema.Provider {
212212
"github_enterprise_actions_workflow_permissions": resourceGithubEnterpriseActionsWorkflowPermissions(),
213213
"github_enterprise_security_analysis_settings": resourceGithubEnterpriseSecurityAnalysisSettings(),
214214
"github_enterprise_cost_center": resourceGithubEnterpriseCostCenter(),
215-
"github_enterprise_cost_center_resources": resourceGithubEnterpriseCostCenterResources(),
216215
"github_workflow_repository_permissions": resourceGithubWorkflowRepositoryPermissions(),
217216
},
218217

0 commit comments

Comments
 (0)