Skip to content
This repository has been archived by the owner on Mar 25, 2022. It is now read-only.

r/opc_compute_image_list_entry: Fix resource imports #66

Merged
merged 1 commit into from
Aug 14, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions opc/import_image_list_entry_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opc

import (
"testing"

"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)

func TestAccOPCImageListEntry_importBasic(t *testing.T) {
rInt := acctest.RandInt()

rName := "opc_compute_image_list_entry.test"

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckImageListEntryDestroy,
Steps: []resource.TestStep{
{
Config: testAccImageListEntry_basic(rInt),
},
{
ResourceName: rName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}
16 changes: 15 additions & 1 deletion opc/resource_image_list_entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,16 @@ func resourceOPCImageListEntry() *schema.Resource {
Read: resourceOPCImageListEntryRead,
Delete: resourceOPCImageListEntryDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
State: func(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
// Split occurs during the Read function, this purely verifies ID was supplied correctly
// during an Import
combined := strings.Split(d.Id(), "|")
if len(combined) != 2 {
return nil, fmt.Errorf(
"Invalid ID specified. Must be in the form of `image_list`|`version`. Got: %s", d.Id())
}
return []*schema.ResourceData{d}, nil
},
},

Schema: map[string]*schema.Schema{
Expand Down Expand Up @@ -88,6 +97,7 @@ func resourceOPCImageListEntryCreate(d *schema.ResourceData, meta interface{}) e
func resourceOPCImageListEntryRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*OPCClient).computeClient.ImageListEntries()

// Only parse image list entry ID if delimiter exists
name, version, err := parseOPCImageListEntryID(d.Id())
if err != nil {
return err
Expand Down Expand Up @@ -144,6 +154,10 @@ func resourceOPCImageListEntryDelete(d *schema.ResourceData, meta interface{}) e

func parseOPCImageListEntryID(id string) (*string, *int, error) {
s := strings.Split(id, "|")
if len(s) != 2 {
return nil, nil, fmt.Errorf(
"Error parsing supplied ImageListEntryID. Please make sure to supply the ID as <name>|<version>")
}
name, versionString := s[0], s[1]
version, err := strconv.Atoi(versionString)
if err != nil {
Expand Down
9 changes: 5 additions & 4 deletions opc/resource_image_list_entry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,14 @@ import (

func TestAccOPCImageListEntry_Basic(t *testing.T) {
ri := acctest.RandInt()
config := fmt.Sprintf(testAccImageListEntry_basic, ri)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckImageListEntryDestroy,
Steps: []resource.TestStep{
{
Config: config,
Config: testAccImageListEntry_basic(ri),
Check: testAccCheckImageListEntryExists,
},
},
Expand Down Expand Up @@ -112,7 +111,9 @@ func testAccCheckImageListEntryDestroy(s *terraform.State) error {
return nil
}

var testAccImageListEntry_basic = `
func testAccImageListEntry_basic(rInt int) string {

return fmt.Sprintf(`
resource "opc_compute_image_list" "test" {
name = "test-acc-image-list-entry-basic-%d"
description = "Acceptance Test TestAccOPCImageListEntry_Basic"
Expand All @@ -123,8 +124,8 @@ resource "opc_compute_image_list_entry" "test" {
name = "${opc_compute_image_list.test.name}"
machine_images = [ "/oracle/public/oel_6.7_apaas_16.4.5_1610211300" ]
version = 1
}`, rInt)
}
`

var testAccImageListEntry_Complete = `
resource "opc_compute_image_list" "test" {
Expand Down
5 changes: 3 additions & 2 deletions website/docs/r/opc_compute_image_list_entry.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,9 @@ In addition to the above arguments, the following attributes are exported

## Import

Image List's can be imported using the `resource name`, e.g.
Image List's can be imported using the Name of the Image List, along with the Version of the Image List Entry,
delimited via the `|` character, e.g.

```shell
$ terraform import opc_compute_image_list_entry.entry1 example
$ terraform import opc_compute_image_list_entry.entry1 my_image_list|2
```