mirror of
https://github.com/kreuzwerker/terraform-provider-docker.git
synced 2025-12-20 22:59:42 -05:00
provider/docker: Add support for a list of pull_triggers within the docker_image resource. (#10845)
This commit is contained in:
parent
8fcb881db3
commit
0a75a724b6
3 changed files with 41 additions and 9 deletions
|
|
@ -28,9 +28,19 @@ func resourceDockerImage() *schema.Resource {
|
|||
},
|
||||
|
||||
"pull_trigger": &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
ConflictsWith: []string{"pull_triggers"},
|
||||
Deprecated: "Use field pull_triggers instead",
|
||||
},
|
||||
|
||||
"pull_triggers": &schema.Schema{
|
||||
Type: schema.TypeSet,
|
||||
Optional: true,
|
||||
ForceNew: true,
|
||||
Elem: &schema.Schema{Type: schema.TypeString},
|
||||
Set: schema.HashString,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -188,15 +188,11 @@ func findImage(d *schema.ResourceData, client *dc.Client) (*dc.APIImages, error)
|
|||
return nil, fmt.Errorf("Empty image name is not allowed")
|
||||
}
|
||||
|
||||
foundImage := searchLocalImages(data, imageName)
|
||||
|
||||
if foundImage == nil {
|
||||
if err := pullImage(&data, client, imageName); err != nil {
|
||||
return nil, fmt.Errorf("Unable to pull image %s: %s", imageName, err)
|
||||
}
|
||||
if err := pullImage(&data, client, imageName); err != nil {
|
||||
return nil, fmt.Errorf("Unable to pull image %s: %s", imageName, err)
|
||||
}
|
||||
|
||||
foundImage = searchLocalImages(data, imageName)
|
||||
foundImage := searchLocalImages(data, imageName)
|
||||
if foundImage != nil {
|
||||
return foundImage, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,22 @@ func TestAccDockerImage_data(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestAccDockerImage_data_pull_trigger(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
PreventPostDestroyRefresh: true,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAccDockerImageFromDataConfigWithPullTrigger,
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
resource.TestMatchResourceAttr("docker_image.foobarbazoo", "latest", contentDigestRegexp),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func testAccDockerImageDestroy(s *terraform.State) error {
|
||||
for _, rs := range s.RootModule().Resources {
|
||||
if rs.Type != "docker_image" {
|
||||
|
|
@ -131,6 +147,16 @@ data "docker_registry_image" "foobarbaz" {
|
|||
}
|
||||
resource "docker_image" "foobarbaz" {
|
||||
name = "${data.docker_registry_image.foobarbaz.name}"
|
||||
pull_trigger = "${data.docker_registry_image.foobarbaz.sha256_digest}"
|
||||
pull_triggers = ["${data.docker_registry_image.foobarbaz.sha256_digest}"]
|
||||
}
|
||||
`
|
||||
|
||||
const testAccDockerImageFromDataConfigWithPullTrigger = `
|
||||
data "docker_registry_image" "foobarbazoo" {
|
||||
name = "alpine:3.1"
|
||||
}
|
||||
resource "docker_image" "foobarbazoo" {
|
||||
name = "${data.docker_registry_image.foobarbazoo.name}"
|
||||
pull_trigger = "${data.docker_registry_image.foobarbazoo.sha256_digest}"
|
||||
}
|
||||
`
|
||||
|
|
|
|||
Loading…
Reference in a new issue