provider/openstack: Adding Timeouts to Blockstorage Resources (#12862)
This commit is contained in:
parent
98ee99f405
commit
e37b26a3fa
|
@ -19,6 +19,11 @@ func resourceBlockStorageVolumeAttachV2() *schema.Resource {
|
||||||
Read: resourceBlockStorageVolumeAttachV2Read,
|
Read: resourceBlockStorageVolumeAttachV2Read,
|
||||||
Delete: resourceBlockStorageVolumeAttachV2Delete,
|
Delete: resourceBlockStorageVolumeAttachV2Delete,
|
||||||
|
|
||||||
|
Timeouts: &schema.ResourceTimeout{
|
||||||
|
Create: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
Delete: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"region": &schema.Schema{
|
"region": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
|
@ -231,7 +236,7 @@ func resourceBlockStorageVolumeAttachV2Create(d *schema.ResourceData, meta inter
|
||||||
Pending: []string{"available", "attaching"},
|
Pending: []string{"available", "attaching"},
|
||||||
Target: []string{"in-use"},
|
Target: []string{"in-use"},
|
||||||
Refresh: VolumeV2StateRefreshFunc(client, volumeId),
|
Refresh: VolumeV2StateRefreshFunc(client, volumeId),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutCreate),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
@ -369,7 +374,7 @@ func resourceBlockStorageVolumeAttachV2Delete(d *schema.ResourceData, meta inter
|
||||||
Pending: []string{"in-use", "attaching", "detaching"},
|
Pending: []string{"in-use", "attaching", "detaching"},
|
||||||
Target: []string{"available"},
|
Target: []string{"available"},
|
||||||
Refresh: VolumeV2StateRefreshFunc(client, volumeId),
|
Refresh: VolumeV2StateRefreshFunc(client, volumeId),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutDelete),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,24 @@ func TestAccBlockStorageVolumeAttachV2_basic(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccBlockStorageVolumeAttachV2_timeout(t *testing.T) {
|
||||||
|
var va volumes.Attachment
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckBlockStorageVolumeAttachV2Destroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccBlockStorageVolumeAttachV2_timeout,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckBlockStorageVolumeAttachV2Exists("openstack_blockstorage_volume_attach_v2.va_1", &va),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckBlockStorageVolumeAttachV2Destroy(s *terraform.State) error {
|
func testAccCheckBlockStorageVolumeAttachV2Destroy(s *terraform.State) error {
|
||||||
config := testAccProvider.Meta().(*Config)
|
config := testAccProvider.Meta().(*Config)
|
||||||
client, err := config.blockStorageV2Client(OS_REGION_NAME)
|
client, err := config.blockStorageV2Client(OS_REGION_NAME)
|
||||||
|
@ -124,3 +142,25 @@ resource "openstack_blockstorage_volume_attach_v2" "va_1" {
|
||||||
platform = "x86_64"
|
platform = "x86_64"
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccBlockStorageVolumeAttachV2_timeout = `
|
||||||
|
resource "openstack_blockstorage_volume_v2" "volume_1" {
|
||||||
|
name = "volume_1"
|
||||||
|
size = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "openstack_blockstorage_volume_attach_v2" "va_1" {
|
||||||
|
volume_id = "${openstack_blockstorage_volume_v2.volume_1.id}"
|
||||||
|
device = "auto"
|
||||||
|
|
||||||
|
host_name = "devstack"
|
||||||
|
ip_address = "192.168.255.10"
|
||||||
|
initiator = "iqn.1993-08.org.debian:01:e9861fb1859"
|
||||||
|
os_type = "linux2"
|
||||||
|
platform = "x86_64"
|
||||||
|
|
||||||
|
timeouts {
|
||||||
|
create = "5m"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
|
@ -24,6 +24,11 @@ func resourceBlockStorageVolumeV1() *schema.Resource {
|
||||||
State: schema.ImportStatePassthrough,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Timeouts: &schema.ResourceTimeout{
|
||||||
|
Create: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
Delete: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"region": &schema.Schema{
|
"region": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
|
@ -139,7 +144,7 @@ func resourceBlockStorageVolumeV1Create(d *schema.ResourceData, meta interface{}
|
||||||
Pending: []string{"downloading", "creating"},
|
Pending: []string{"downloading", "creating"},
|
||||||
Target: []string{"available"},
|
Target: []string{"available"},
|
||||||
Refresh: VolumeV1StateRefreshFunc(blockStorageClient, v.ID),
|
Refresh: VolumeV1StateRefreshFunc(blockStorageClient, v.ID),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutCreate),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
@ -278,7 +283,7 @@ func resourceBlockStorageVolumeV1Delete(d *schema.ResourceData, meta interface{}
|
||||||
Pending: []string{"deleting", "downloading", "available"},
|
Pending: []string{"deleting", "downloading", "available"},
|
||||||
Target: []string{"deleted"},
|
Target: []string{"deleted"},
|
||||||
Refresh: VolumeV1StateRefreshFunc(blockStorageClient, d.Id()),
|
Refresh: VolumeV1StateRefreshFunc(blockStorageClient, d.Id()),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutDelete),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,24 @@ func TestAccBlockStorageV1Volume_image(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccBlockStorageV1Volume_timeout(t *testing.T) {
|
||||||
|
var volume volumes.Volume
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckBlockStorageV1VolumeDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccBlockStorageV1Volume_timeout,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckBlockStorageV1VolumeExists("openstack_blockstorage_volume_v1.volume_1", &volume),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckBlockStorageV1VolumeDestroy(s *terraform.State) error {
|
func testAccCheckBlockStorageV1VolumeDestroy(s *terraform.State) error {
|
||||||
config := testAccProvider.Meta().(*Config)
|
config := testAccProvider.Meta().(*Config)
|
||||||
blockStorageClient, err := config.blockStorageV1Client(OS_REGION_NAME)
|
blockStorageClient, err := config.blockStorageV1Client(OS_REGION_NAME)
|
||||||
|
@ -188,3 +206,16 @@ resource "openstack_blockstorage_volume_v1" "volume_1" {
|
||||||
image_id = "%s"
|
image_id = "%s"
|
||||||
}
|
}
|
||||||
`, OS_IMAGE_ID)
|
`, OS_IMAGE_ID)
|
||||||
|
|
||||||
|
const testAccBlockStorageV1Volume_timeout = `
|
||||||
|
resource "openstack_blockstorage_volume_v1" "volume_1" {
|
||||||
|
name = "volume_1"
|
||||||
|
description = "first test volume"
|
||||||
|
size = 1
|
||||||
|
|
||||||
|
timeouts {
|
||||||
|
create = "5m"
|
||||||
|
delete = "5m"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
|
@ -24,6 +24,11 @@ func resourceBlockStorageVolumeV2() *schema.Resource {
|
||||||
State: schema.ImportStatePassthrough,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Timeouts: &schema.ResourceTimeout{
|
||||||
|
Create: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
Delete: schema.DefaultTimeout(10 * time.Minute),
|
||||||
|
},
|
||||||
|
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"region": &schema.Schema{
|
"region": &schema.Schema{
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
|
@ -151,7 +156,7 @@ func resourceBlockStorageVolumeV2Create(d *schema.ResourceData, meta interface{}
|
||||||
Pending: []string{"downloading", "creating"},
|
Pending: []string{"downloading", "creating"},
|
||||||
Target: []string{"available"},
|
Target: []string{"available"},
|
||||||
Refresh: VolumeV2StateRefreshFunc(blockStorageClient, v.ID),
|
Refresh: VolumeV2StateRefreshFunc(blockStorageClient, v.ID),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutCreate),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
@ -289,7 +294,7 @@ func resourceBlockStorageVolumeV2Delete(d *schema.ResourceData, meta interface{}
|
||||||
Pending: []string{"deleting", "downloading", "available"},
|
Pending: []string{"deleting", "downloading", "available"},
|
||||||
Target: []string{"deleted"},
|
Target: []string{"deleted"},
|
||||||
Refresh: VolumeV2StateRefreshFunc(blockStorageClient, d.Id()),
|
Refresh: VolumeV2StateRefreshFunc(blockStorageClient, d.Id()),
|
||||||
Timeout: 10 * time.Minute,
|
Timeout: d.Timeout(schema.TimeoutDelete),
|
||||||
Delay: 10 * time.Second,
|
Delay: 10 * time.Second,
|
||||||
MinTimeout: 3 * time.Second,
|
MinTimeout: 3 * time.Second,
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,24 @@ func TestAccBlockStorageV2Volume_image(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccBlockStorageV2Volume_timeout(t *testing.T) {
|
||||||
|
var volume volumes.Volume
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckBlockStorageV2VolumeDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccBlockStorageV2Volume_timeout,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckBlockStorageV2VolumeExists("openstack_blockstorage_volume_v2.volume_1", &volume),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckBlockStorageV2VolumeDestroy(s *terraform.State) error {
|
func testAccCheckBlockStorageV2VolumeDestroy(s *terraform.State) error {
|
||||||
config := testAccProvider.Meta().(*Config)
|
config := testAccProvider.Meta().(*Config)
|
||||||
blockStorageClient, err := config.blockStorageV2Client(OS_REGION_NAME)
|
blockStorageClient, err := config.blockStorageV2Client(OS_REGION_NAME)
|
||||||
|
@ -186,3 +204,16 @@ resource "openstack_blockstorage_volume_v2" "volume_1" {
|
||||||
image_id = "%s"
|
image_id = "%s"
|
||||||
}
|
}
|
||||||
`, OS_IMAGE_ID)
|
`, OS_IMAGE_ID)
|
||||||
|
|
||||||
|
const testAccBlockStorageV2Volume_timeout = `
|
||||||
|
resource "openstack_blockstorage_volume_v2" "volume_1" {
|
||||||
|
name = "volume_1"
|
||||||
|
description = "first test volume"
|
||||||
|
size = 1
|
||||||
|
|
||||||
|
timeouts {
|
||||||
|
create = "5m"
|
||||||
|
delete = "5m"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
Loading…
Reference in New Issue