Skip to content

Commit dd4103a

Browse files
authored
Revert "[datadog_user] Add service account support (#1490)" (#1586)
This reverts commit 26bab4c.
1 parent 2c7f2cc commit dd4103a

13 files changed

+52
-866
lines changed

datadog/resource_datadog_application_key.go

Lines changed: 15 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package datadog
22

33
import (
44
"context"
5-
"net/http"
65

76
"github.com/terraform-providers/terraform-provider-datadog/datadog/internal/utils"
87

@@ -28,12 +27,6 @@ func resourceDatadogApplicationKey() *schema.Resource {
2827
Type: schema.TypeString,
2928
Required: true,
3029
},
31-
"service_account": {
32-
Description: "ID of a service account that owns the Application Key.",
33-
Type: schema.TypeString,
34-
ForceNew: true,
35-
Optional: true,
36-
},
3730
"key": {
3831
Description: "The value of the Application Key.",
3932
Type: schema.TypeString,
@@ -73,32 +66,12 @@ func updateApplicationKeyState(d *schema.ResourceData, applicationKeyData *datad
7366
return nil
7467
}
7568

76-
func updatePartialApplicationKeyState(d *schema.ResourceData, applicationKeyData *datadogV2.PartialApplicationKey) diag.Diagnostics {
77-
applicationKeyAttributes := applicationKeyData.GetAttributes()
78-
79-
if err := d.Set("name", applicationKeyAttributes.GetName()); err != nil {
80-
return diag.FromErr(err)
81-
}
82-
return nil
83-
}
84-
8569
func resourceDatadogApplicationKeyCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
8670
providerConf := meta.(*ProviderConfiguration)
8771
apiInstances := providerConf.DatadogApiInstances
8872
auth := providerConf.Auth
8973

90-
var resp datadogV2.ApplicationKeyResponse
91-
var httpResponse *http.Response
92-
var err error
93-
94-
req := buildDatadogApplicationKeyCreateV2Struct(d)
95-
96-
if v, ok := d.GetOk("service_account"); ok {
97-
resp, httpResponse, err = apiInstances.GetServiceAccountsApiV2().CreateServiceAccountApplicationKey(auth, v.(string), *req)
98-
} else {
99-
resp, httpResponse, err = apiInstances.GetKeyManagementApiV2().CreateCurrentUserApplicationKey(auth, *req)
100-
}
101-
74+
resp, httpResponse, err := apiInstances.GetKeyManagementApiV2().CreateCurrentUserApplicationKey(auth, *buildDatadogApplicationKeyCreateV2Struct(d))
10275
if err != nil {
10376
return utils.TranslateClientErrorDiag(err, httpResponse, "error creating application key")
10477
}
@@ -114,68 +87,37 @@ func resourceDatadogApplicationKeyRead(ctx context.Context, d *schema.ResourceDa
11487
apiInstances := providerConf.DatadogApiInstances
11588
auth := providerConf.Auth
11689

117-
if v, ok := d.GetOk("service_account"); ok {
118-
resp, httpResponse, err := apiInstances.GetServiceAccountsApiV2().GetServiceAccountApplicationKey(auth, v.(string), d.Id())
119-
if err != nil {
120-
if httpResponse != nil && httpResponse.StatusCode == 404 {
121-
d.SetId("")
122-
return nil
123-
}
124-
return utils.TranslateClientErrorDiag(err, httpResponse, "error getting application key")
125-
}
126-
applicationKeyData := resp.GetData()
127-
return updatePartialApplicationKeyState(d, &applicationKeyData)
128-
} else {
129-
resp, httpResponse, err := apiInstances.GetKeyManagementApiV2().GetCurrentUserApplicationKey(auth, d.Id())
130-
if err != nil {
131-
if httpResponse != nil && httpResponse.StatusCode == 404 {
132-
d.SetId("")
133-
return nil
134-
}
135-
return utils.TranslateClientErrorDiag(err, httpResponse, "error getting application key")
90+
resp, httpResponse, err := apiInstances.GetKeyManagementApiV2().GetCurrentUserApplicationKey(auth, d.Id())
91+
if err != nil {
92+
if httpResponse != nil && httpResponse.StatusCode == 404 {
93+
d.SetId("")
94+
return nil
13695
}
137-
applicationKeyData := resp.GetData()
138-
return updateApplicationKeyState(d, &applicationKeyData)
96+
return utils.TranslateClientErrorDiag(err, httpResponse, "error getting application key")
13997
}
98+
applicationKeyData := resp.GetData()
99+
return updateApplicationKeyState(d, &applicationKeyData)
140100
}
141101

142102
func resourceDatadogApplicationKeyUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
143103
providerConf := meta.(*ProviderConfiguration)
144104
apiInstances := providerConf.DatadogApiInstances
145105
auth := providerConf.Auth
146106

147-
if v, ok := d.GetOk("service_account"); ok {
148-
resp, httpResponse, err := apiInstances.GetServiceAccountsApiV2().UpdateServiceAccountApplicationKey(auth, v.(string), d.Id(), *buildDatadogApplicationKeyUpdateV2Struct(d))
149-
if err != nil {
150-
return utils.TranslateClientErrorDiag(err, httpResponse, "error updating application key")
151-
}
152-
applicationKeyData := resp.GetData()
153-
return updatePartialApplicationKeyState(d, &applicationKeyData)
154-
} else {
155-
resp, httpResponse, err := apiInstances.GetKeyManagementApiV2().UpdateCurrentUserApplicationKey(auth, d.Id(), *buildDatadogApplicationKeyUpdateV2Struct(d))
156-
if err != nil {
157-
return utils.TranslateClientErrorDiag(err, httpResponse, "error updating application key")
158-
}
159-
applicationKeyData := resp.GetData()
160-
return updateApplicationKeyState(d, &applicationKeyData)
107+
resp, httpResponse, err := apiInstances.GetKeyManagementApiV2().UpdateCurrentUserApplicationKey(auth, d.Id(), *buildDatadogApplicationKeyUpdateV2Struct(d))
108+
if err != nil {
109+
return utils.TranslateClientErrorDiag(err, httpResponse, "error updating application key")
161110
}
111+
applicationKeyData := resp.GetData()
112+
return updateApplicationKeyState(d, &applicationKeyData)
162113
}
163114

164115
func resourceDatadogApplicationKeyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
165116
providerConf := meta.(*ProviderConfiguration)
166117
apiInstances := providerConf.DatadogApiInstances
167118
auth := providerConf.Auth
168119

169-
var httpResponse *http.Response
170-
var err error
171-
172-
if v, ok := d.GetOk("service_account"); ok {
173-
httpResponse, err = apiInstances.GetServiceAccountsApiV2().DeleteServiceAccountApplicationKey(auth, v.(string), d.Id())
174-
} else {
175-
httpResponse, err = apiInstances.GetKeyManagementApiV2().DeleteCurrentUserApplicationKey(auth, d.Id())
176-
}
177-
178-
if err != nil {
120+
if httpResponse, err := apiInstances.GetKeyManagementApiV2().DeleteCurrentUserApplicationKey(auth, d.Id()); err != nil {
179121
return utils.TranslateClientErrorDiag(err, httpResponse, "error deleting application key")
180122
}
181123

datadog/resource_datadog_user.go

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package datadog
33
import (
44
"context"
55
"log"
6-
"net/http"
76

87
"github.com/terraform-providers/terraform-provider-datadog/datadog/internal/utils"
98

@@ -56,14 +55,6 @@ func resourceDatadogUser() *schema.Resource {
5655
return d.Id() != ""
5756
},
5857
},
59-
"service_account": {
60-
Description: "Whether the user is a service account.",
61-
Type: schema.TypeBool,
62-
Optional: true,
63-
Default: false,
64-
ForceNew: true,
65-
ConflictsWith: []string{"send_user_invitation"},
66-
},
6758
"verified": {
6859
Description: "Returns `true` if the user is verified.",
6960
Type: schema.TypeBool,
@@ -78,7 +69,16 @@ func resourceDatadogUser() *schema.Resource {
7869
}
7970
}
8071

81-
func buildDatadogUserV2UserRelationships(d *schema.ResourceData) *datadogV2.UserRelationships {
72+
func buildDatadogUserV2Struct(d *schema.ResourceData) *datadogV2.UserCreateRequest {
73+
userAttributes := datadogV2.NewUserCreateAttributesWithDefaults()
74+
userAttributes.SetEmail(d.Get("email").(string))
75+
if v, ok := d.GetOk("name"); ok {
76+
userAttributes.SetName(v.(string))
77+
}
78+
79+
userCreate := datadogV2.NewUserCreateDataWithDefaults()
80+
userCreate.SetAttributes(*userAttributes)
81+
8282
roles := d.Get("roles").(*schema.Set).List()
8383
rolesData := make([]datadogV2.RelationshipToRoleData, len(roles))
8484
for i, role := range roles {
@@ -92,46 +92,14 @@ func buildDatadogUserV2UserRelationships(d *schema.ResourceData) *datadogV2.User
9292

9393
userRelationships := datadogV2.NewUserRelationships()
9494
userRelationships.SetRoles(*toRoles)
95-
return userRelationships
96-
}
97-
98-
func buildDatadogUserV2Struct(d *schema.ResourceData) *datadogV2.UserCreateRequest {
99-
userAttributes := datadogV2.NewUserCreateAttributesWithDefaults()
100-
userAttributes.SetEmail(d.Get("email").(string))
101-
if v, ok := d.GetOk("name"); ok {
102-
userAttributes.SetName(v.(string))
103-
}
104-
105-
userCreate := datadogV2.NewUserCreateDataWithDefaults()
106-
userCreate.SetAttributes(*userAttributes)
107-
108-
userCreate.SetRelationships(*buildDatadogUserV2UserRelationships(d))
95+
userCreate.SetRelationships(*userRelationships)
10996

11097
userRequest := datadogV2.NewUserCreateRequestWithDefaults()
11198
userRequest.SetData(*userCreate)
11299

113100
return userRequest
114101
}
115102

116-
func buildDatadogServiceAccountV2Struct(d *schema.ResourceData) *datadogV2.ServiceAccountCreateRequest {
117-
serviceAccountAttributes := datadogV2.NewServiceAccountCreateAttributesWithDefaults()
118-
serviceAccountAttributes.SetServiceAccount(true)
119-
serviceAccountAttributes.SetEmail(d.Get("email").(string))
120-
if v, ok := d.GetOk("name"); ok {
121-
serviceAccountAttributes.SetName(v.(string))
122-
}
123-
124-
serviceAccountCreate := datadogV2.NewServiceAccountCreateDataWithDefaults()
125-
serviceAccountCreate.SetAttributes(*serviceAccountAttributes)
126-
127-
serviceAccountCreate.SetRelationships(*buildDatadogUserV2UserRelationships(d))
128-
129-
serviceAccountRequest := datadogV2.NewServiceAccountCreateRequestWithDefaults()
130-
serviceAccountRequest.SetData(*serviceAccountCreate)
131-
132-
return serviceAccountRequest
133-
}
134-
135103
func buildDatadogUserV2UpdateStruct(d *schema.ResourceData, userID string) *datadogV2.UserUpdateRequest {
136104
userAttributes := datadogV2.NewUserUpdateAttributesWithDefaults()
137105
userAttributes.SetEmail(d.Get("email").(string))
@@ -189,24 +157,13 @@ func resourceDatadogUserCreate(ctx context.Context, d *schema.ResourceData, meta
189157
apiInstances := providerConf.DatadogApiInstances
190158
auth := providerConf.Auth
191159

160+
userRequest := buildDatadogUserV2Struct(d)
192161
var userID string
193162
updated := false
194163

195-
var createResponse datadogV2.UserResponse
196-
var httpresp *http.Response
197-
var err error
198-
199-
if d.Get("service_account").(bool) {
200-
d.Set("send_user_invitation", false)
201-
serviceAccountRequest := buildDatadogServiceAccountV2Struct(d)
202-
createResponse, httpresp, err = apiInstances.GetUsersApiV2().CreateServiceAccount(auth, *serviceAccountRequest)
203-
} else {
204-
userRequest := buildDatadogUserV2Struct(d)
205-
createResponse, httpresp, err = apiInstances.GetUsersApiV2().CreateUser(auth, *userRequest)
206-
}
207-
208164
// Datadog does not actually delete users, so CreateUser might return a 409.
209165
// We ignore that case and proceed, likely re-enabling the user.
166+
createResponse, httpresp, err := apiInstances.GetUsersApiV2().CreateUser(auth, *userRequest)
210167
if err != nil {
211168
if httpresp == nil || httpresp.StatusCode != 409 {
212169
return utils.TranslateClientErrorDiag(err, httpresp, "error creating user")
@@ -227,7 +184,7 @@ func resourceDatadogUserCreate(ctx context.Context, d *schema.ResourceData, meta
227184
responseData := listResponse.GetData()
228185
if len(responseData) > 1 {
229186
for _, user := range responseData {
230-
if user.Attributes.GetEmail() == email && user.Attributes.GetServiceAccount() == d.Get("service_account").(bool) {
187+
if user.Attributes.GetEmail() == email {
231188
existingUser = &user
232189
break
233190
}
@@ -337,9 +294,6 @@ func updateUserStateV2(d *schema.ResourceData, user *datadogV2.UserResponse) dia
337294
if err := d.Set("disabled", userAttributes.GetDisabled()); err != nil {
338295
return diag.FromErr(err)
339296
}
340-
if err := d.Set("service_account", userAttributes.GetServiceAccount()); err != nil {
341-
return diag.FromErr(err)
342-
}
343297
roles := make([]string, len(userRoles))
344298
for i, userRole := range userRoles {
345299
roles[i] = userRole.GetId()

datadog/tests/cassettes/TestAccDatadogUser_ServiceAccount.freeze

Lines changed: 0 additions & 1 deletion
This file was deleted.

datadog/tests/cassettes/TestAccDatadogUser_ServiceAccount.yaml

Lines changed: 0 additions & 84 deletions
This file was deleted.

datadog/tests/cassettes/TestAccDatadogUser_ServiceAccountForceNew.freeze

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)