/
resource_citrixadc_change_password.go
81 lines (72 loc) · 2.05 KB
/
resource_citrixadc_change_password.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package citrixadc
import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"log"
)
type changePasswordPayload struct {
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
New_password string `json:"new_password,omitempty"`
}
func resourceCitrixAdcChangePassword() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,
Create: createChangePassword,
Read: schema.Noop,
Delete: schema.Noop,
Schema: map[string]*schema.Schema{
"username": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"password": {
Type: schema.TypeString,
Required: true,
Sensitive: true,
ForceNew: true,
},
"new_password": {
Type: schema.TypeString,
Required: true,
Sensitive: true,
ForceNew: true,
},
"first_time_password_reset": {
Type: schema.TypeBool,
Description: "Value is 'true' if the user is changing the default password, else value is 'false' if user wants to change password at any point later",
Required: true,
ForceNew: true,
},
},
}
}
func createChangePassword(d *schema.ResourceData, meta interface{}) error {
log.Printf("[DEBUG] citrixadc-provider: In createChangePassword")
client := meta.(*NetScalerNitroClient).client
id := resource.PrefixedUniqueId("tf-change-password-")
payload := changePasswordPayload{
Username: d.Get("username").(string),
Password: d.Get("password").(string),
New_password: d.Get("new_password").(string),
}
// first time default password resetter
if d.Get("first_time_password_reset").(bool) == true {
_, err := client.AddResource("login", "", &payload)
if err != nil {
return err
}
} else {
new_payload := changePasswordPayload{
Username: d.Get("username").(string),
Password: d.Get("new_password").(string),
}
err := client.UpdateUnnamedResource("systemuser", &new_payload)
if err != nil {
return err
}
}
d.SetId(id)
return nil
}