Improved finding in snapshot list. can only handle <200 SSs
This commit is contained in:
parent
42d4112896
commit
b139aaef16
|
@ -64,27 +64,31 @@ func resourceDigitalOceanDropletSnapshotCreate(d *schema.ResourceData, meta inte
|
||||||
return fmt.Errorf("Error creating Droplet Snapshot: %s", err)
|
return fmt.Errorf("Error creating Droplet Snapshot: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for ok := true; ok; ok = checkActionProgress(action.ID, meta) {
|
for ok := true; ok; ok = checkActionProgress(action.Status) {
|
||||||
|
action, _, _ = client.Actions.Get(context.Background(), action.ID)
|
||||||
time.Sleep(10)
|
time.Sleep(10)
|
||||||
}
|
}
|
||||||
opt := godo.ListOptions{}
|
opt := godo.ListOptions{Page: 1, PerPage: 200}
|
||||||
snapshotList, _, _ := client.Droplets.Snapshots(context.Background(), action.ResourceID, &opt)
|
snapshotList, _, _ := client.Droplets.Snapshots(context.Background(), action.ResourceID, &opt)
|
||||||
|
|
||||||
d.SetId(strconv.Itoa(snapshotList[len(snapshotList)-1].ID))
|
for _, v := range snapshotList {
|
||||||
d.Set("name", snapshotList[len(snapshotList)-1].Name)
|
createdTime, _ := time.Parse("2006-01-02T15:04:05Z", v.Created)
|
||||||
d.Set("resource_id", strconv.Itoa(snapshotList[len(snapshotList)-1].ID))
|
checkTime := godo.Timestamp{createdTime}
|
||||||
d.Set("regions", snapshotList[len(snapshotList)-1].Regions)
|
|
||||||
d.Set("created_at", snapshotList[len(snapshotList)-1].Created)
|
|
||||||
d.Set("min_disk_size", snapshotList[len(snapshotList)-1].MinDiskSize)
|
|
||||||
|
|
||||||
|
if checkTime == *action.StartedAt {
|
||||||
|
d.SetId(strconv.Itoa(v.ID))
|
||||||
|
d.Set("name", v.Name)
|
||||||
|
d.Set("resource_id", strconv.Itoa(v.ID))
|
||||||
|
d.Set("regions", v.Regions)
|
||||||
|
d.Set("created_at", v.Created)
|
||||||
|
d.Set("min_disk_size", v.MinDiskSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
return resourceDigitalOceanDropletSnapshotRead(d, meta)
|
return resourceDigitalOceanDropletSnapshotRead(d, meta)
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkActionProgress(actionId int, meta interface{}) bool {
|
func checkActionProgress(actionProgress string) bool {
|
||||||
client := meta.(*godo.Client)
|
if actionProgress == "in-progress" {
|
||||||
|
|
||||||
action, _, _ := client.Actions.Get(context.Background(), actionId)
|
|
||||||
if action.Status == "in-progress" {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -49,7 +49,9 @@ func testSweepDropletSnapshots(region string) error {
|
||||||
|
|
||||||
func TestAccDigitalOceanDropletSnapshot_Basic(t *testing.T) {
|
func TestAccDigitalOceanDropletSnapshot_Basic(t *testing.T) {
|
||||||
var snapshot godo.Snapshot
|
var snapshot godo.Snapshot
|
||||||
rInt := acctest.RandInt()
|
rInt1 := acctest.RandInt()
|
||||||
|
rInt2 := acctest.RandInt()
|
||||||
|
rInt3 := acctest.RandInt()
|
||||||
|
|
||||||
resource.Test(t, resource.TestCase{
|
resource.Test(t, resource.TestCase{
|
||||||
PreCheck: func() { testAccPreCheck(t) },
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
@ -57,17 +59,13 @@ func TestAccDigitalOceanDropletSnapshot_Basic(t *testing.T) {
|
||||||
CheckDestroy: testAccCheckDigitalOceanDropletSnapshotDestroy,
|
CheckDestroy: testAccCheckDigitalOceanDropletSnapshotDestroy,
|
||||||
Steps: []resource.TestStep{
|
Steps: []resource.TestStep{
|
||||||
{
|
{
|
||||||
Config: fmt.Sprintf(testAccCheckDigitalOceanDropletSnapshotConfig_basic, rInt, rInt),
|
Config: fmt.Sprintf(testAccCheckDigitalOceanDropletSnapshotConfig_basic, rInt1, rInt2, rInt3),
|
||||||
Check: resource.ComposeTestCheckFunc(
|
Check: resource.ComposeTestCheckFunc(
|
||||||
testAccCheckDigitalOceanDropletSnapshotExists("digitalocean_droplet_snapshot.foobar", &snapshot),
|
testAccCheckDigitalOceanDropletSnapshotExists("digitalocean_droplet_snapshot.foobar_one", &snapshot),
|
||||||
resource.TestCheckResourceAttr(
|
resource.TestCheckResourceAttr(
|
||||||
"digitalocean_droplet_snapshot.foobar", "name", fmt.Sprintf("snapshot-%d", rInt)),
|
"digitalocean_droplet_snapshot.foobar_one", "name", fmt.Sprintf("snapshotone-%d", rInt2)),
|
||||||
resource.TestCheckResourceAttr(
|
resource.TestCheckResourceAttr(
|
||||||
"digitalocean_droplet_snapshot.foobar", "regions.#", "1"),
|
"digitalocean_droplet_snapshot.foobar_two", "name", fmt.Sprintf("snapshottwo-%d", rInt3)),
|
||||||
resource.TestCheckResourceAttr(
|
|
||||||
"digitalocean_droplet_snapshot.foobar", "min_disk_size", "20"),
|
|
||||||
resource.TestCheckResourceAttrSet(
|
|
||||||
"digitalocean_droplet_snapshot.foobar", "resource_id"),
|
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -123,10 +121,6 @@ func testAccCheckDigitalOceanDropletSnapshotDestroy(s *terraform.State) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
const testAccCheckDigitalOceanDropletSnapshotConfig_basic = `
|
const testAccCheckDigitalOceanDropletSnapshotConfig_basic = `
|
||||||
resource "digitalocean_droplet_snapshot" "foobar" {
|
|
||||||
name = "snapshot-%d"
|
|
||||||
resource_id = "${digitalocean_droplet.foo.id}"
|
|
||||||
}
|
|
||||||
resource "digitalocean_droplet" "foo" {
|
resource "digitalocean_droplet" "foo" {
|
||||||
name = "foo-%d"
|
name = "foo-%d"
|
||||||
size = "512mb"
|
size = "512mb"
|
||||||
|
@ -134,4 +128,12 @@ resource "digitalocean_droplet" "foo" {
|
||||||
region = "nyc3"
|
region = "nyc3"
|
||||||
user_data = "foobar"
|
user_data = "foobar"
|
||||||
}
|
}
|
||||||
`
|
resource "digitalocean_droplet_snapshot" "foobar_one" {
|
||||||
|
name = "snapshotone-%d"
|
||||||
|
resource_id = "${digitalocean_droplet.foo.id}"
|
||||||
|
}
|
||||||
|
resource "digitalocean_droplet_snapshot" "foobar_two" {
|
||||||
|
name = "snapshottwo-%d"
|
||||||
|
resource_id = "${digitalocean_droplet.foo.id}"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
Loading…
Reference in New Issue