Skip to content

Commit 7c2c0b8

Browse files
authored
Change team_uuid to team in user_team_membership
2 parents 873187d + bf04140 commit 7c2c0b8

File tree

6 files changed

+78
-21
lines changed

6 files changed

+78
-21
lines changed

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
## v0.2.1
2+
3+
BREAKING CHANGES:
4+
5+
* resource/user_team_membership: The `team_uuid` attribute has been renamed to `team` for consistency with other resources
6+
7+
ENHANCEMENTS:
8+
9+
* resource/user_team_membership: Added example files for resource usage and import
10+
* docs: Updated documentation to reflect the `team` attribute naming
11+
112
## v0.2.0
213

314
FEATURES:
@@ -11,7 +22,7 @@ BREAKING CHANGES:
1122
ENHANCEMENTS:
1223

1324
* resource/user_team_membership: Supports full CRUD operations for user team memberships
14-
* resource/user_team_membership: Supports import using the format `username/team_uuid`
25+
* resource/user_team_membership: Supports import using the format `username/team`
1526
* resource/user_team_membership: Works with managed, LDAP, and OIDC users
1627
* tests: Added acceptance tests for `dependencytrack_user_team_membership` resource using API key authentication
1728

docs/resources/user_team_membership.md

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,45 @@ description: |-
1010

1111
Manages a user's membership in a team in Dependency-Track. This resource associates a user with a team.
1212

13-
13+
## Example Usage
14+
15+
```terraform
16+
resource "dependencytrack_team" "developers" {
17+
name = "Developers"
18+
}
19+
20+
resource "dependencytrack_managed_user" "john_doe" {
21+
username = "john.doe"
22+
fullname = "John Doe"
23+
24+
password = "SecurePassword123!"
25+
}
26+
27+
resource "dependencytrack_user_team_membership" "john_developers" {
28+
username = dependencytrack_managed_user.john_doe.username
29+
team = dependencytrack_team.developers.id
30+
}
31+
```
1432

1533
<!-- schema generated by tfplugindocs -->
1634
## Schema
1735

1836
### Required
1937

20-
- `team_uuid` (String) The UUID of the team
38+
- `team` (String) The UUID of the team
2139
- `username` (String) The username of the user
2240

2341
### Read-Only
2442

2543
- `id` (String) The unique identifier in the format `username/team_uuid`
44+
45+
## Import
46+
47+
Import is supported using the following syntax:
48+
49+
The [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import) can be used, for example:
50+
51+
```shell
52+
# User team memberships can be imported using the format: username/team_uuid
53+
terraform import dependencytrack_user_team_membership.example john.doe/00000000-0000-0000-0000-000000000001
54+
```
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# User team memberships can be imported using the format: username/team_uuid
2+
terraform import dependencytrack_user_team_membership.example john.doe/00000000-0000-0000-0000-000000000001
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
resource "dependencytrack_team" "developers" {
2+
name = "Developers"
3+
}
4+
5+
resource "dependencytrack_managed_user" "john_doe" {
6+
username = "john.doe"
7+
fullname = "John Doe"
8+
9+
password = "SecurePassword123!"
10+
}
11+
12+
resource "dependencytrack_user_team_membership" "john_developers" {
13+
username = dependencytrack_managed_user.john_doe.username
14+
team = dependencytrack_team.developers.id
15+
}

internal/provider/user_team_membership_resource.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ type UserTeamMembershipResource struct {
4141
type UserTeamMembershipResourceModel struct {
4242
ID types.String `tfsdk:"id"`
4343
Username types.String `tfsdk:"username"`
44-
TeamUUID types.String `tfsdk:"team_uuid"`
44+
Team types.String `tfsdk:"team"`
4545
}
4646

4747
// IdentifiableObject represents an object with a UUID field.
@@ -72,7 +72,7 @@ func (r *UserTeamMembershipResource) Schema(ctx context.Context, req resource.Sc
7272
stringplanmodifier.RequiresReplace(),
7373
},
7474
},
75-
"team_uuid": schema.StringAttribute{
75+
"team": schema.StringAttribute{
7676
MarkdownDescription: "The UUID of the team",
7777
Required: true,
7878
PlanModifiers: []planmodifier.String{
@@ -118,7 +118,7 @@ func (r *UserTeamMembershipResource) Create(ctx context.Context, req resource.Cr
118118
}
119119

120120
// Parse team UUID
121-
teamUUID, err := uuid.Parse(data.TeamUUID.ValueString())
121+
teamUUID, err := uuid.Parse(data.Team.ValueString())
122122
if err != nil {
123123
resp.Diagnostics.AddError("Invalid UUID", fmt.Sprintf("Unable to parse team UUID: %s", err))
124124
return
@@ -132,7 +132,7 @@ func (r *UserTeamMembershipResource) Create(ctx context.Context, req resource.Cr
132132
}
133133

134134
// Set the ID as a composite key
135-
data.ID = types.StringValue(fmt.Sprintf("%s/%s", data.Username.ValueString(), data.TeamUUID.ValueString()))
135+
data.ID = types.StringValue(fmt.Sprintf("%s/%s", data.Username.ValueString(), data.Team.ValueString()))
136136

137137
tflog.Trace(ctx, "created a user team membership resource")
138138

@@ -151,7 +151,7 @@ func (r *UserTeamMembershipResource) Read(ctx context.Context, req resource.Read
151151
}
152152

153153
// Parse team UUID
154-
teamUUID, err := uuid.Parse(data.TeamUUID.ValueString())
154+
teamUUID, err := uuid.Parse(data.Team.ValueString())
155155
if err != nil {
156156
resp.Diagnostics.AddError("Invalid UUID", fmt.Sprintf("Unable to parse team UUID: %s", err))
157157
return
@@ -184,11 +184,11 @@ func (r *UserTeamMembershipResource) Update(ctx context.Context, req resource.Up
184184
return
185185
}
186186

187-
// Since both username and team_uuid require replacement, this should never be called
187+
// Since both username and team require replacement, this should never be called
188188
// But we'll implement it for completeness
189189
resp.Diagnostics.AddError(
190190
"Update Not Supported",
191-
"Updating a user team membership requires replacing the resource. Both username and team_uuid require replacement.",
191+
"Updating a user team membership requires replacing the resource. Both username and team require replacement.",
192192
)
193193
}
194194

@@ -203,7 +203,7 @@ func (r *UserTeamMembershipResource) Delete(ctx context.Context, req resource.De
203203
}
204204

205205
// Parse team UUID
206-
teamUUID, err := uuid.Parse(data.TeamUUID.ValueString())
206+
teamUUID, err := uuid.Parse(data.Team.ValueString())
207207
if err != nil {
208208
resp.Diagnostics.AddError("Invalid UUID", fmt.Sprintf("Unable to parse team UUID: %s", err))
209209
return
@@ -245,7 +245,7 @@ func (r *UserTeamMembershipResource) ImportState(ctx context.Context, req resour
245245
// Set the attributes
246246
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("id"), req.ID)...)
247247
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("username"), username)...)
248-
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("team_uuid"), teamUUID)...)
248+
resp.Diagnostics.Append(resp.State.SetAttribute(ctx, path.Root("team"), teamUUID)...)
249249
}
250250

251251
// Helper methods for API calls

internal/provider/user_team_membership_resource_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func TestAccUserTeamMembershipResource(t *testing.T) {
2525
),
2626
statecheck.ExpectKnownValue(
2727
"dependencytrack_user_team_membership.test",
28-
tfjsonpath.New("team_uuid"),
28+
tfjsonpath.New("team"),
2929
knownvalue.NotNull(),
3030
),
3131
statecheck.ExpectKnownValue(
@@ -60,8 +60,8 @@ resource "dependencytrack_managed_user" "test" {
6060
}
6161
6262
resource "dependencytrack_user_team_membership" "test" {
63-
username = dependencytrack_managed_user.test.username
64-
team_uuid = dependencytrack_team.test.id
63+
username = dependencytrack_managed_user.test.username
64+
team = dependencytrack_team.test.id
6565
}
6666
`
6767
}
@@ -109,13 +109,13 @@ resource "dependencytrack_managed_user" "test" {
109109
}
110110
111111
resource "dependencytrack_user_team_membership" "test1" {
112-
username = dependencytrack_managed_user.test.username
113-
team_uuid = dependencytrack_team.test1.id
112+
username = dependencytrack_managed_user.test.username
113+
team = dependencytrack_team.test1.id
114114
}
115115
116116
resource "dependencytrack_user_team_membership" "test2" {
117-
username = dependencytrack_managed_user.test.username
118-
team_uuid = dependencytrack_team.test2.id
117+
username = dependencytrack_managed_user.test.username
118+
team = dependencytrack_team.test2.id
119119
}
120120
`
121121
}
@@ -169,8 +169,8 @@ resource "dependencytrack_managed_user" "test" {
169169
}
170170
171171
resource "dependencytrack_user_team_membership" "test" {
172-
username = dependencytrack_managed_user.test.username
173-
team_uuid = dependencytrack_team.` + teamRef + `.id
172+
username = dependencytrack_managed_user.test.username
173+
team = dependencytrack_team.` + teamRef + `.id
174174
}
175175
`
176176
}

0 commit comments

Comments
 (0)