feat: support to import an image with image name

This commit is contained in:
Shunsuke Suzuki 2021-03-29 20:00:00 +09:00
parent c50524b321
commit a975668ff4
3 changed files with 19 additions and 4 deletions

View file

@ -1,6 +1,8 @@
package provider
import (
"context"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
@ -10,6 +12,12 @@ func resourceDockerImage() *schema.Resource {
ReadContext: resourceDockerImageRead,
UpdateContext: resourceDockerImageUpdate,
DeleteContext: resourceDockerImageDelete,
Importer: &schema.ResourceImporter{
StateContext: func(_ context.Context, d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) {
d.Set("name", d.Id())
return []*schema.ResourceData{d}, nil
},
},
Schema: map[string]*schema.Schema{
"name": {

View file

@ -67,12 +67,11 @@ func resourceDockerImageCreate(ctx context.Context, d *schema.ResourceData, meta
}
}
}
apiImage, err := findImage(ctx, imageName, client, meta.(*ProviderConfig).AuthConfigs)
if err != nil {
if _, err := findImage(ctx, imageName, client, meta.(*ProviderConfig).AuthConfigs); err != nil {
return diag.Errorf("Unable to read Docker image into resource: %s", err)
}
d.SetId(apiImage.ID + d.Get("name").(string))
d.SetId(imageName)
return resourceDockerImageRead(ctx, d, meta)
}
@ -94,7 +93,7 @@ func resourceDockerImageRead(ctx context.Context, d *schema.ResourceData, meta i
return nil
}
d.SetId(foundImage.ID + d.Get("name").(string))
d.SetId(imageName)
d.Set("latest", foundImage.ID)
return nil
}

View file

@ -98,3 +98,11 @@ The `build` block supports:
The following attributes are exported in addition to the above configuration:
* `latest` (string) - The ID of the image.
## Import
Docker images can be imported using image name, e.g. for an image named `alpine:3.13.0`:
```sh
$ terraform import docker_image.alpine alpine:3.13.0
```