Skip to content

Commit 2d9b42d

Browse files
authored
Merge pull request scaleway#48 from terraform-providers/reverse-ip
add support for managing ip reverse attribute
2 parents 38a7b39 + c79b921 commit 2d9b42d

File tree

5 files changed

+87
-7
lines changed

5 files changed

+87
-7
lines changed

scaleway/resource_ip.go

+24
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ func resourceScalewayIP() *schema.Resource {
2929
Computed: true,
3030
Description: "The ipv4 address of the ip",
3131
},
32+
"reverse": {
33+
Type: schema.TypeString,
34+
Optional: true,
35+
Description: "The ipv4 reverse dns",
36+
},
3237
},
3338
}
3439
}
@@ -67,6 +72,9 @@ func resourceScalewayIPRead(d *schema.ResourceData, m interface{}) error {
6772
if resp.IP.Server != nil {
6873
d.Set("server", resp.IP.Server.Identifier)
6974
}
75+
if resp.IP.Reverse != nil {
76+
d.Set("reverse", *resp.IP.Reverse)
77+
}
7078
return nil
7179
}
7280

@@ -76,6 +84,22 @@ func resourceScalewayIPUpdate(d *schema.ResourceData, m interface{}) error {
7684
mu.Lock()
7785
defer mu.Unlock()
7886

87+
if d.HasChange("reverse") {
88+
log.Printf("[DEBUG] Updating IP %q reverse to %q\n", d.Id(), d.Get("reverse").(string))
89+
ip, err := scaleway.UpdateIP(api.UpdateIPRequest{
90+
ID: d.Id(),
91+
Reverse: d.Get("reverse").(string),
92+
})
93+
if err != nil {
94+
return err
95+
}
96+
if ip.IP.Reverse != nil {
97+
d.Set("reverse", *ip.IP.Reverse)
98+
} else {
99+
d.Set("reverse", "")
100+
}
101+
}
102+
79103
if d.HasChange("server") {
80104
if d.Get("server").(string) != "" {
81105
log.Printf("[DEBUG] Attaching IP %q to server %q\n", d.Id(), d.Get("server").(string))

scaleway/resource_ip_test.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,23 @@ func TestAccScalewayIP_Basic(t *testing.T) {
6868
testAccCheckScalewayIPExists("scaleway_ip.base"),
6969
),
7070
},
71+
resource.TestStep{
72+
Config: testAccCheckScalewayIPConfig_Reverse,
73+
Check: resource.ComposeTestCheckFunc(
74+
testAccCheckScalewayIPExists("scaleway_ip.base"),
75+
resource.TestCheckResourceAttr(
76+
"scaleway_ip.base", "reverse", "www.google.de"),
77+
),
78+
},
7179
resource.TestStep{
7280
Config: testAccCheckScalewayIPAttachConfig,
7381
Check: resource.ComposeTestCheckFunc(
7482
testAccCheckScalewayIPExists("scaleway_ip.base"),
7583
testAccCheckScalewayIPAttachment("scaleway_ip.base", func(serverID string) bool {
7684
return serverID != ""
7785
}, "attachment failed"),
86+
resource.TestCheckResourceAttr(
87+
"scaleway_ip.base", "reverse", ""),
7888
),
7989
},
8090
resource.TestStep{
@@ -172,11 +182,16 @@ func testAccCheckScalewayIPAttachment(n string, check func(string) bool, msg str
172182
}
173183
}
174184

175-
var testAccCheckScalewayIPConfig = `
185+
var testAccCheckScalewayIPConfig_Reverse = `
176186
resource "scaleway_ip" "base" {
187+
reverse = "www.google.de"
177188
}
178189
`
179190

191+
var testAccCheckScalewayIPConfig = `
192+
resource "scaleway_ip" "base" {}
193+
`
194+
180195
var testAccCheckScalewayIPConfig_Count = `
181196
resource "scaleway_ip" "base" {
182197
count = 2

vendor/github.com/nicolai86/scaleway-sdk/ip.go

+40
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/vendor.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -558,10 +558,10 @@
558558
"revisionTime": "2016-10-03T17:45:16Z"
559559
},
560560
{
561-
"checksumSHA1": "HHM/BHbGWERr3u0mwCsj+587zBY=",
561+
"checksumSHA1": "TFoFErx/R+wtqKsYAY+mzbLtbCA=",
562562
"path": "github.com/nicolai86/scaleway-sdk",
563-
"revision": "1a18b6a1c6a3434c88b908254958f1281cf3ac2c",
564-
"revisionTime": "2018-03-15T02:26:51Z"
563+
"revision": "1e466487c486466a8ba2cfb48fac56788a8095ea",
564+
"revisionTime": "2018-03-15T04:05:42Z"
565565
},
566566
{
567567
"checksumSHA1": "u5s2PZ7fzCOqQX7bVPf9IJ+qNLQ=",

website/docs/r/ip.html.markdown

+4-3
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@ resource "scaleway_ip" "test_ip" {}
2222
The following arguments are supported:
2323

2424
* `server` - (Optional) ID of server to associate IP with
25-
26-
Field `server` is editable.
25+
* `reverse` - (Optional) Reverse DNS of the IP
2726

2827
## Attributes Reference
2928

3029
The following attributes are exported:
3130

32-
* `id` - id of the new resource
31+
* `id` - ID of the new resource
3332
* `ip` - IP of the new resource
33+
* `server` - ID of the associated server resource
34+
* `reverse` - reverse DNS setting of the IP resource
3435

3536
## Import
3637

0 commit comments

Comments
 (0)