Skip to content

Commit fd802b3

Browse files
authored
Handle ImageNotFoundException in ImageResource.delete (#215)
1 parent a781894 commit fd802b3

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/commonMain/kotlin/me/devnatan/dockerkt/resource/image/ImageResource.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ import io.ktor.client.request.post
1010
import io.ktor.client.request.preparePost
1111
import io.ktor.client.request.setBody
1212
import io.ktor.http.ContentType
13+
import io.ktor.http.HttpStatusCode
1314
import io.ktor.http.contentType
1415
import io.ktor.utils.io.ByteReadChannel
1516
import io.ktor.utils.io.readUTF8Line
1617
import kotlinx.coroutines.flow.Flow
1718
import kotlinx.coroutines.flow.flow
1819
import kotlinx.serialization.json.Json
20+
import me.devnatan.dockerkt.io.requestCatching
1921
import me.devnatan.dockerkt.models.image.ImageBuildOptions
2022
import me.devnatan.dockerkt.models.image.ImagePull
2123
import me.devnatan.dockerkt.models.image.ImageSummary
@@ -51,9 +53,13 @@ public class ImageResource internal constructor(
5153
force: Boolean? = false,
5254
noprune: Boolean? = false,
5355
) {
54-
httpClient.delete("$BasePath/$name") {
55-
parameter("force", force)
56-
parameter("noprune", noprune)
56+
requestCatching(
57+
HttpStatusCode.NotFound to { exception -> ImageNotFoundException(exception, name) },
58+
) {
59+
httpClient.delete("$BasePath/$name") {
60+
parameter("force", force)
61+
parameter("noprune", noprune)
62+
}
5763
}
5864
}
5965

src/commonTest/kotlin/me/devnatan/dockerkt/TestUtils.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import me.devnatan.dockerkt.models.volume.Volume
66
import me.devnatan.dockerkt.models.volume.VolumeCreateOptions
77
import me.devnatan.dockerkt.resource.container.create
88
import me.devnatan.dockerkt.resource.container.remove
9+
import me.devnatan.dockerkt.resource.image.ImageNotFoundException
910
import me.devnatan.dockerkt.resource.volume.create
1011
import me.devnatan.dockerkt.resource.volume.remove
1112
import kotlin.test.fail
@@ -23,7 +24,9 @@ suspend fun <R> DockerClient.withImage(
2324
try {
2425
return block(imageName)
2526
} finally {
26-
images.remove(imageName, force = true)
27+
try {
28+
images.remove(imageName, force = true)
29+
} catch (_: ImageNotFoundException) {}
2730
}
2831
}
2932

0 commit comments

Comments
 (0)