No-op during Read if credentials are invalid (#194)

The `Image` resource already ignores errors during read but the `Index`
resource was requiring the inspect call to always succeed. This will often 
fail due to https://github.com/pulumi/pulumi/issues/4981 (note however in
this case credentials are stored with the resource instead of the provider).

This changes our logic to instead emit a warning if the credentials are
invalid.

Fixes https://github.com/pulumi/pulumi-docker-build/issues/121.
This commit is contained in:
Bryce Lampe
2024-08-13 12:54:14 -07:00
committed by GitHub
parent 0ba90b8cde
commit 81a7aa4ec4
15 changed files with 435 additions and 390 deletions

View File

@@ -718,27 +718,27 @@ class Image(pulumi.CustomResource):
ecr_repository = aws.ecr.Repository("ecr-repository")
auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id)
my_image = docker_build.Image("my-image",
cache_from=[docker_build.CacheFromArgs(
registry=docker_build.CacheFromRegistryArgs(
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
),
)],
cache_to=[docker_build.CacheToArgs(
registry=docker_build.CacheToRegistryArgs(
image_manifest=True,
oci_media_types=True,
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
),
)],
context=docker_build.BuildContextArgs(
location="./app",
),
cache_from=[{
"registry": {
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
},
}],
cache_to=[{
"registry": {
"image_manifest": True,
"oci_media_types": True,
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
},
}],
context={
"location": "./app",
},
push=True,
registries=[docker_build.RegistryArgs(
address=ecr_repository.repository_url,
password=auth_token.password,
username=auth_token.user_name,
)],
registries=[{
"address": ecr_repository.repository_url,
"password": auth_token.password,
"username": auth_token.user_name,
}],
tags=[ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:latest")])
pulumi.export("ref", my_image.ref)
```
@@ -748,9 +748,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
platforms=[
docker_build.Platform.PLAN9_AMD64,
docker_build.Platform.PLAN9_386,
@@ -763,15 +763,15 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=True,
registries=[docker_build.RegistryArgs(
address="docker.io",
password=docker_hub_password,
username="pulumibot",
)],
registries=[{
"address": "docker.io",
"password": docker_hub_password,
"username": "pulumibot",
}],
tags=["docker.io/pulumi/pulumi:3.107.0"])
pulumi.export("ref", my_image["ref"])
```
@@ -781,20 +781,20 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
cache_from=[docker_build.CacheFromArgs(
local=docker_build.CacheFromLocalArgs(
src="tmp/cache",
),
)],
cache_to=[docker_build.CacheToArgs(
local=docker_build.CacheToLocalArgs(
dest="tmp/cache",
mode=docker_build.CacheMode.MAX,
),
)],
context=docker_build.BuildContextArgs(
location="app",
),
cache_from=[{
"local": {
"src": "tmp/cache",
},
}],
cache_to=[{
"local": {
"dest": "tmp/cache",
"mode": docker_build.CacheMode.MAX,
},
}],
context={
"location": "app",
},
push=False)
```
### Docker Build Cloud
@@ -803,12 +803,12 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
builder=docker_build.BuilderConfigArgs(
name="cloud-builder-name",
),
context=docker_build.BuildContextArgs(
location="app",
),
builder={
"name": "cloud-builder-name",
},
context={
"location": "app",
},
exec_=True,
push=False)
```
@@ -821,9 +821,9 @@ class Image(pulumi.CustomResource):
build_args={
"SET_ME_TO_TRUE": "true",
},
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=False)
```
### Build target
@@ -832,9 +832,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=False,
target="build-me")
```
@@ -844,14 +844,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
named={
"golang:latest": docker_build.ContextArgs(
location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
),
context={
"location": "app",
"named": {
"golang_latest": {
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
},
},
),
},
push=False)
```
### Remote context
@@ -860,9 +860,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
),
context={
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
},
push=False)
```
### Inline Dockerfile
@@ -871,14 +871,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
dockerfile=docker_build.DockerfileArgs(
inline=\"\"\"FROM busybox
context={
"location": "app",
},
dockerfile={
"inline": \"\"\"FROM busybox
COPY hello.c ./
\"\"\",
),
},
push=False)
```
### Remote context
@@ -887,12 +887,12 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="https://github.com/docker-library/hello-world.git",
),
dockerfile=docker_build.DockerfileArgs(
location="app/Dockerfile",
),
context={
"location": "https://github.com/docker-library/hello-world.git",
},
dockerfile={
"location": "app/Dockerfile",
},
push=False)
```
### Local export
@@ -901,14 +901,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
exports=[docker_build.ExportArgs(
docker=docker_build.ExportDockerArgs(
tar=True,
),
)],
context={
"location": "app",
},
exports=[{
"docker": {
"tar": True,
},
}],
push=False)
```
@@ -1156,27 +1156,27 @@ class Image(pulumi.CustomResource):
ecr_repository = aws.ecr.Repository("ecr-repository")
auth_token = aws.ecr.get_authorization_token_output(registry_id=ecr_repository.registry_id)
my_image = docker_build.Image("my-image",
cache_from=[docker_build.CacheFromArgs(
registry=docker_build.CacheFromRegistryArgs(
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
),
)],
cache_to=[docker_build.CacheToArgs(
registry=docker_build.CacheToRegistryArgs(
image_manifest=True,
oci_media_types=True,
ref=ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
),
)],
context=docker_build.BuildContextArgs(
location="./app",
),
cache_from=[{
"registry": {
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
},
}],
cache_to=[{
"registry": {
"image_manifest": True,
"oci_media_types": True,
"ref": ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:cache"),
},
}],
context={
"location": "./app",
},
push=True,
registries=[docker_build.RegistryArgs(
address=ecr_repository.repository_url,
password=auth_token.password,
username=auth_token.user_name,
)],
registries=[{
"address": ecr_repository.repository_url,
"password": auth_token.password,
"username": auth_token.user_name,
}],
tags=[ecr_repository.repository_url.apply(lambda repository_url: f"{repository_url}:latest")])
pulumi.export("ref", my_image.ref)
```
@@ -1186,9 +1186,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
platforms=[
docker_build.Platform.PLAN9_AMD64,
docker_build.Platform.PLAN9_386,
@@ -1201,15 +1201,15 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=True,
registries=[docker_build.RegistryArgs(
address="docker.io",
password=docker_hub_password,
username="pulumibot",
)],
registries=[{
"address": "docker.io",
"password": docker_hub_password,
"username": "pulumibot",
}],
tags=["docker.io/pulumi/pulumi:3.107.0"])
pulumi.export("ref", my_image["ref"])
```
@@ -1219,20 +1219,20 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
cache_from=[docker_build.CacheFromArgs(
local=docker_build.CacheFromLocalArgs(
src="tmp/cache",
),
)],
cache_to=[docker_build.CacheToArgs(
local=docker_build.CacheToLocalArgs(
dest="tmp/cache",
mode=docker_build.CacheMode.MAX,
),
)],
context=docker_build.BuildContextArgs(
location="app",
),
cache_from=[{
"local": {
"src": "tmp/cache",
},
}],
cache_to=[{
"local": {
"dest": "tmp/cache",
"mode": docker_build.CacheMode.MAX,
},
}],
context={
"location": "app",
},
push=False)
```
### Docker Build Cloud
@@ -1241,12 +1241,12 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
builder=docker_build.BuilderConfigArgs(
name="cloud-builder-name",
),
context=docker_build.BuildContextArgs(
location="app",
),
builder={
"name": "cloud-builder-name",
},
context={
"location": "app",
},
exec_=True,
push=False)
```
@@ -1259,9 +1259,9 @@ class Image(pulumi.CustomResource):
build_args={
"SET_ME_TO_TRUE": "true",
},
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=False)
```
### Build target
@@ -1270,9 +1270,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
context={
"location": "app",
},
push=False,
target="build-me")
```
@@ -1282,14 +1282,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
named={
"golang:latest": docker_build.ContextArgs(
location="docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
),
context={
"location": "app",
"named": {
"golang_latest": {
"location": "docker-image://golang@sha256:b8e62cf593cdaff36efd90aa3a37de268e6781a2e68c6610940c48f7cdf36984",
},
},
),
},
push=False)
```
### Remote context
@@ -1298,9 +1298,9 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
),
context={
"location": "https://raw.githubusercontent.com/pulumi/pulumi-docker/api-types/provider/testdata/Dockerfile",
},
push=False)
```
### Inline Dockerfile
@@ -1309,14 +1309,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
dockerfile=docker_build.DockerfileArgs(
inline=\"\"\"FROM busybox
context={
"location": "app",
},
dockerfile={
"inline": \"\"\"FROM busybox
COPY hello.c ./
\"\"\",
),
},
push=False)
```
### Remote context
@@ -1325,12 +1325,12 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="https://github.com/docker-library/hello-world.git",
),
dockerfile=docker_build.DockerfileArgs(
location="app/Dockerfile",
),
context={
"location": "https://github.com/docker-library/hello-world.git",
},
dockerfile={
"location": "app/Dockerfile",
},
push=False)
```
### Local export
@@ -1339,14 +1339,14 @@ class Image(pulumi.CustomResource):
import pulumi_docker_build as docker_build
image = docker_build.Image("image",
context=docker_build.BuildContextArgs(
location="app",
),
exports=[docker_build.ExportArgs(
docker=docker_build.ExportDockerArgs(
tar=True,
),
)],
context={
"location": "app",
},
exports=[{
"docker": {
"tar": True,
},
}],
push=False)
```