@@ -30,39 +30,22 @@ func resourceFreeIPADNSRecord() *schema.Resource {
30
30
Required : true ,
31
31
ForceNew : true ,
32
32
},
33
- "dnsttl" : {
34
- Type : schema .TypeInt ,
35
- Optional : true ,
36
- },
37
- "dnsclass" : {
38
- Type : schema .TypeString ,
39
- Optional : true ,
40
- },
41
- "arecord" : {
42
- Type : schema .TypeString ,
43
- Optional : true ,
44
- },
45
- "a_part_ip_address" : {
33
+ "type" : {
46
34
Type : schema .TypeString ,
47
- Optional : true ,
48
- },
49
- "srvrecord" : {
50
- Type : schema .TypeString ,
51
- Optional : true ,
52
- },
53
- "srv_part_priority" : {
54
- Type : schema .TypeInt ,
55
- Optional : true ,
35
+ Required : true ,
36
+ ForceNew : true ,
56
37
},
57
- "srv_part_weight" : {
58
- Type : schema .TypeInt ,
59
- Optional : true ,
38
+ "records" : {
39
+ Type : schema .TypeSet ,
40
+ Elem : & schema.Schema {Type : schema .TypeString },
41
+ Required : true ,
42
+ // Set: schema.HashString,
60
43
},
61
- "srv_part_port " : {
44
+ "dnsttl " : {
62
45
Type : schema .TypeInt ,
63
46
Optional : true ,
64
47
},
65
- "srv_part_target " : {
48
+ "dnsclass " : {
66
49
Type : schema .TypeString ,
67
50
Optional : true ,
68
51
},
@@ -89,6 +72,19 @@ func resourceFreeIPADNSRecordCreate(d *schema.ResourceData, meta interface{}) er
89
72
Dnszoneidnsname : & dnszoneidnsname ,
90
73
}
91
74
75
+ _type := d .Get ("type" )
76
+ _records := d .Get ("records" ).(* schema.Set ).List ()
77
+ records := make ([]string , len (_records ))
78
+ for i , d := range _records {
79
+ records [i ] = d .(string )
80
+ }
81
+ switch _type {
82
+ case "A" :
83
+ optArgs .Arecord = & records
84
+ case "SRV" :
85
+ optArgs .Srvrecord = & records
86
+ }
87
+
92
88
if _dnsttl , ok := d .GetOkExists ("dnsttl" ); ok {
93
89
dnsttl := _dnsttl .(int )
94
90
optArgs .Dnsttl = & dnsttl
@@ -99,46 +95,12 @@ func resourceFreeIPADNSRecordCreate(d *schema.ResourceData, meta interface{}) er
99
95
optArgs .Dnsclass = & dnsclass
100
96
}
101
97
102
- if _arecord , ok := d .GetOkExists ("arecord" ); ok {
103
- arecord := []string {_arecord .(string )}
104
- optArgs .Arecord = & arecord
105
- }
106
-
107
- if _aPartIPAddress , ok := d .GetOkExists ("a_part_ip_address" ); ok {
108
- aPartIPAddress := _aPartIPAddress .(string )
109
- optArgs .APartIPAddress = & aPartIPAddress
110
- }
111
-
112
- if _srvrecord , ok := d .GetOkExists ("srvrecord" ); ok {
113
- srvrecord := []string {_srvrecord .(string )}
114
- optArgs .Srvrecord = & srvrecord
115
- }
116
-
117
- if _aSrvPartPriority , ok := d .GetOkExists ("srv_part_priority" ); ok {
118
- aSrvPartPriority := _aSrvPartPriority .(int )
119
- optArgs .SrvPartPriority = & aSrvPartPriority
120
- }
121
-
122
- if _aSrvPartWeight , ok := d .GetOkExists ("srv_part_weight" ); ok {
123
- aSrvPartWeight := _aSrvPartWeight .(int )
124
- optArgs .SrvPartWeight = & aSrvPartWeight
125
- }
126
-
127
- if _aSrvPartPort , ok := d .GetOkExists ("srv_part_port" ); ok {
128
- aSrvPartPort := _aSrvPartPort .(int )
129
- optArgs .SrvPartPort = & aSrvPartPort
130
- }
131
-
132
- if _aSrvPartTarget , ok := d .GetOkExists ("srv_part_target" ); ok {
133
- aSrvPartTarget := _aSrvPartTarget
134
- optArgs .SrvPartTarget = & aSrvPartTarget
135
- }
136
-
137
98
_ , err = client .DnsrecordAdd (& args , & optArgs )
138
99
if err != nil {
139
100
return err
140
101
}
141
102
103
+ // TODO: use aws_route53_records' way to generate ID
142
104
d .SetId (fmt .Sprintf ("%s.%s" , idnsname , dnszoneidnsname ))
143
105
144
106
return resourceFreeIPADNSRecordRead (d , meta )
@@ -156,11 +118,22 @@ func resourceFreeIPADNSRecordUpdate(d *schema.ResourceData, meta interface{}) er
156
118
Idnsname : d .Get ("idnsname" ).(string ),
157
119
}
158
120
159
- optArgs := ipa.DnsrecordModOptionalArgs {}
121
+ dnszoneidnsname := d .Get ("dnszoneidnsname" )
122
+ optArgs := ipa.DnsrecordModOptionalArgs {
123
+ Dnszoneidnsname : & dnszoneidnsname ,
124
+ }
160
125
161
- if _dnszoneidnsname , ok := d .GetOkExists ("dnszoneidnsname" ); ok {
162
- dnszoneidnsname := _dnszoneidnsname
163
- optArgs .Dnszoneidnsname = & dnszoneidnsname
126
+ _type := d .Get ("type" )
127
+ _records := d .Get ("records" ).(* schema.Set ).List ()
128
+ records := make ([]string , len (_records ))
129
+ for i , d := range _records {
130
+ records [i ] = d .(string )
131
+ }
132
+ switch _type {
133
+ case "A" :
134
+ optArgs .Arecord = & records
135
+ case "SRV" :
136
+ optArgs .Srvrecord = & records
164
137
}
165
138
166
139
if _dnsttl , ok := d .GetOkExists ("dnsttl" ); ok {
@@ -173,41 +146,6 @@ func resourceFreeIPADNSRecordUpdate(d *schema.ResourceData, meta interface{}) er
173
146
optArgs .Dnsclass = & dnsclass
174
147
}
175
148
176
- if _arecord , ok := d .GetOkExists ("arecord" ); ok {
177
- arecord := []string {_arecord .(string )}
178
- optArgs .Arecord = & arecord
179
- }
180
-
181
- if _aPartIPAddress , ok := d .GetOkExists ("a_part_ip_address" ); ok {
182
- aPartIPAddress := _aPartIPAddress .(string )
183
- optArgs .APartIPAddress = & aPartIPAddress
184
- }
185
-
186
- if _srvrecord , ok := d .GetOkExists ("srvrecord" ); ok {
187
- srvrecord := []string {_srvrecord .(string )}
188
- optArgs .Srvrecord = & srvrecord
189
- }
190
-
191
- if _aSrvPartPriority , ok := d .GetOkExists ("srv_part_priority" ); ok {
192
- aSrvPartPriority := _aSrvPartPriority .(int )
193
- optArgs .SrvPartPriority = & aSrvPartPriority
194
- }
195
-
196
- if _aSrvPartWeight , ok := d .GetOkExists ("srv_part_weight" ); ok {
197
- aSrvPartWeight := _aSrvPartWeight .(int )
198
- optArgs .SrvPartWeight = & aSrvPartWeight
199
- }
200
-
201
- if _aSrvPartPort , ok := d .GetOkExists ("srv_part_port" ); ok {
202
- aSrvPartPort := _aSrvPartPort .(int )
203
- optArgs .SrvPartPort = & aSrvPartPort
204
- }
205
-
206
- if _aSrvPartTarget , ok := d .GetOkExists ("srv_part_target" ); ok {
207
- aSrvPartTarget := _aSrvPartTarget
208
- optArgs .SrvPartTarget = & aSrvPartTarget
209
- }
210
-
211
149
_ , err = client .DnsrecordMod (& args , & optArgs )
212
150
if err != nil {
213
151
return err
@@ -228,52 +166,32 @@ func resourceFreeIPADNSRecordRead(d *schema.ResourceData, meta interface{}) erro
228
166
Idnsname : d .Get ("idnsname" ).(string ),
229
167
}
230
168
231
- optArgs := ipa. DnsrecordShowOptionalArgs {}
232
-
233
- if _dnszoneidnsname , ok := d . GetOkExists ( "dnszoneidnsname" ); ok {
234
- dnszoneidnsname := _dnszoneidnsname
235
- optArgs . Dnszoneidnsname = & dnszoneidnsname
169
+ dnszoneidnsname := d . Get ( "dnszoneidnsname" )
170
+ all := true
171
+ optArgs := ipa. DnsrecordShowOptionalArgs {
172
+ Dnszoneidnsname : & dnszoneidnsname ,
173
+ All : & all ,
236
174
}
237
175
238
176
res , err := client .DnsrecordShow (& args , & optArgs )
239
177
if err != nil {
240
178
return err
241
179
}
242
180
243
- if res .Result .Dnsttl != nil {
244
- d .Set ("dnsttl" , * res .Result .Dnsttl )
245
- }
246
-
247
- if res .Result .Dnsclass != nil {
248
- d .Set ("dnsclass" , * res .Result .Dnsclass )
249
- }
250
-
251
181
if res .Result .Arecord != nil {
252
- d .Set ("arecord" , * res .Result .Arecord )
253
- }
254
-
255
- if res .Result .APartIPAddress != nil {
256
- d .Set ("a_part_ip_address" , * res .Result .APartIPAddress )
182
+ d .Set ("records" , * res .Result .Arecord )
257
183
}
258
184
259
185
if res .Result .Srvrecord != nil {
260
- d .Set ("srvrecord " , * res .Result .Srvrecord )
186
+ d .Set ("records " , * res .Result .Srvrecord )
261
187
}
262
188
263
- if res .Result .SrvPartPriority != nil {
264
- d .Set ("srv_part_priority" , * res .Result .SrvPartPriority )
265
- }
266
-
267
- if res .Result .SrvPartWeight != nil {
268
- d .Set ("srv_part_weight" , * res .Result .SrvPartWeight )
269
- }
270
-
271
- if res .Result .SrvPartPort != nil {
272
- d .Set ("srv_part_port" , * res .Result .SrvPartPort )
189
+ if res .Result .Dnsttl != nil {
190
+ d .Set ("dnsttl" , * res .Result .Dnsttl )
273
191
}
274
192
275
- if res .Result .SrvPartTarget != nil {
276
- d .Set ("srv_part_target " , * res .Result .SrvPartTarget )
193
+ if res .Result .Dnsclass != nil {
194
+ d .Set ("dnsclass " , * res .Result .Dnsclass )
277
195
}
278
196
279
197
return nil
@@ -292,26 +210,23 @@ func resourceFreeIPADNSRecordDelete(d *schema.ResourceData, meta interface{}) er
292
210
}
293
211
294
212
dnszoneidnsname := d .Get ("dnszoneidnsname" )
295
- delAll := true
296
-
297
213
optArgs := ipa.DnsrecordDelOptionalArgs {
298
214
Dnszoneidnsname : & dnszoneidnsname ,
299
215
}
300
216
301
- if _arecord , ok := d .GetOkExists ("arecord" ); ok {
302
- arecord := []string {_arecord .(string )}
303
- optArgs .Arecord = & arecord
304
- delAll = false
217
+ _type := d .Get ("type" )
218
+ _records := d .Get ("records" ).(* schema.Set ).List ()
219
+ records := make ([]string , len (_records ))
220
+ for i , d := range _records {
221
+ records [i ] = d .(string )
305
222
}
306
-
307
- if _srvrecord , ok := d . GetOkExists ( "srvrecord" ); ok {
308
- srvrecord := [] string { _srvrecord .( string )}
309
- optArgs . Srvrecord = & srvrecord
310
- delAll = false
223
+ switch _type {
224
+ case "A" :
225
+ optArgs . Arecord = & records
226
+ case "SRV" :
227
+ optArgs . Srvrecord = & records
311
228
}
312
229
313
- optArgs .DelAll = & delAll
314
-
315
230
_ , err = client .DnsrecordDel (& args , & optArgs )
316
231
if err != nil {
317
232
return err
0 commit comments