/
resource_citrixadc_lsnhttphdrlogprofile.go
151 lines (134 loc) · 4.88 KB
/
resource_citrixadc_lsnhttphdrlogprofile.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package citrixadc
import (
"github.com/citrix/adc-nitro-go/resource/config/lsn"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"fmt"
"log"
)
func resourceCitrixAdcLsnhttphdrlogprofile() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,
Create: createLsnhttphdrlogprofileFunc,
Read: readLsnhttphdrlogprofileFunc,
Update: updateLsnhttphdrlogprofileFunc,
Delete: deleteLsnhttphdrlogprofileFunc,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Schema: map[string]*schema.Schema{
"httphdrlogprofilename": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"loghost": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"logmethod": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"logurl": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"logversion": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
},
}
}
func createLsnhttphdrlogprofileFunc(d *schema.ResourceData, meta interface{}) error {
log.Printf("[DEBUG] citrixadc-provider: In createLsnhttphdrlogprofileFunc")
client := meta.(*NetScalerNitroClient).client
lsnhttphdrlogprofileName := d.Get("httphdrlogprofilename").(string)
lsnhttphdrlogprofile := lsn.Lsnhttphdrlogprofile{
Httphdrlogprofilename: d.Get("httphdrlogprofilename").(string),
Loghost: d.Get("loghost").(string),
Logmethod: d.Get("logmethod").(string),
Logurl: d.Get("logurl").(string),
Logversion: d.Get("logversion").(string),
}
_, err := client.AddResource("lsnhttphdrlogprofile", lsnhttphdrlogprofileName, &lsnhttphdrlogprofile)
if err != nil {
return err
}
d.SetId(lsnhttphdrlogprofileName)
err = readLsnhttphdrlogprofileFunc(d, meta)
if err != nil {
log.Printf("[ERROR] netscaler-provider: ?? we just created this lsnhttphdrlogprofile but we can't read it ?? %s", lsnhttphdrlogprofileName)
return nil
}
return nil
}
func readLsnhttphdrlogprofileFunc(d *schema.ResourceData, meta interface{}) error {
log.Printf("[DEBUG] citrixadc-provider: In readLsnhttphdrlogprofileFunc")
client := meta.(*NetScalerNitroClient).client
lsnhttphdrlogprofileName := d.Id()
log.Printf("[DEBUG] citrixadc-provider: Reading lsnhttphdrlogprofile state %s", lsnhttphdrlogprofileName)
data, err := client.FindResource("lsnhttphdrlogprofile", lsnhttphdrlogprofileName)
if err != nil {
log.Printf("[WARN] citrixadc-provider: Clearing lsnhttphdrlogprofile state %s", lsnhttphdrlogprofileName)
d.SetId("")
return nil
}
d.Set("httphdrlogprofilename", data["httphdrlogprofilename"])
d.Set("loghost", data["loghost"])
d.Set("logmethod", data["logmethod"])
d.Set("logurl", data["logurl"])
d.Set("logversion", data["logversion"])
return nil
}
func updateLsnhttphdrlogprofileFunc(d *schema.ResourceData, meta interface{}) error {
log.Printf("[DEBUG] citrixadc-provider: In updateLsnhttphdrlogprofileFunc")
client := meta.(*NetScalerNitroClient).client
lsnhttphdrlogprofileName := d.Get("httphdrlogprofilename").(string)
lsnhttphdrlogprofile := lsn.Lsnhttphdrlogprofile{
Httphdrlogprofilename: d.Get("httphdrlogprofilename").(string),
}
hasChange := false
if d.HasChange("loghost") {
log.Printf("[DEBUG] citrixadc-provider: Loghost has changed for lsnhttphdrlogprofile %s, starting update", lsnhttphdrlogprofileName)
lsnhttphdrlogprofile.Loghost = d.Get("loghost").(string)
hasChange = true
}
if d.HasChange("logmethod") {
log.Printf("[DEBUG] citrixadc-provider: Logmethod has changed for lsnhttphdrlogprofile %s, starting update", lsnhttphdrlogprofileName)
lsnhttphdrlogprofile.Logmethod = d.Get("logmethod").(string)
hasChange = true
}
if d.HasChange("logurl") {
log.Printf("[DEBUG] citrixadc-provider: Logurl has changed for lsnhttphdrlogprofile %s, starting update", lsnhttphdrlogprofileName)
lsnhttphdrlogprofile.Logurl = d.Get("logurl").(string)
hasChange = true
}
if d.HasChange("logversion") {
log.Printf("[DEBUG] citrixadc-provider: Logversion has changed for lsnhttphdrlogprofile %s, starting update", lsnhttphdrlogprofileName)
lsnhttphdrlogprofile.Logversion = d.Get("logversion").(string)
hasChange = true
}
if hasChange {
err := client.UpdateUnnamedResource("lsnhttphdrlogprofile", &lsnhttphdrlogprofile)
if err != nil {
return fmt.Errorf("Error updating lsnhttphdrlogprofile %s", lsnhttphdrlogprofileName)
}
}
return readLsnhttphdrlogprofileFunc(d, meta)
}
func deleteLsnhttphdrlogprofileFunc(d *schema.ResourceData, meta interface{}) error {
log.Printf("[DEBUG] citrixadc-provider: In deleteLsnhttphdrlogprofileFunc")
client := meta.(*NetScalerNitroClient).client
lsnhttphdrlogprofileName := d.Id()
err := client.DeleteResource("lsnhttphdrlogprofile", lsnhttphdrlogprofileName)
if err != nil {
return err
}
d.SetId("")
return nil
}