Skip to content

Commit

Permalink
deps: update kubernetesclient to v20
Browse files Browse the repository at this point in the history
  • Loading branch information
sschuberth committed Jun 21, 2024
1 parent 3c25da5 commit d4dafee
Show file tree
Hide file tree
Showing 8 changed files with 175 additions and 217 deletions.
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ kotestAssertionsKtor = "2.0.0"
kotestExtensionTestContainers = "2.0.2"
ktor = "2.3.12"
ktorSwaggerUi = "2.10.0"
kubernetesClient = "18.0.1"
kubernetesClient = "20.0.1"
log4j = "2.23.1"
logback = "1.5.6"
micrometer = "1.13.1"
Expand Down
8 changes: 4 additions & 4 deletions transport/kubernetes-jobmonitor/src/main/kotlin/JobHandler.kt
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ internal class JobHandler(
*/
private fun deleteJob(jobName: String) {
runCatching {
jobApi.deleteNamespacedJob(jobName, namespace, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, namespace).execute()
}.onFailure { e ->
logger.error("Could not remove job '$jobName': $e.")
}
Expand All @@ -187,7 +187,7 @@ internal class JobHandler(
private fun findPodsForJob(jobName: String): List<V1Pod> {
val selector = "job-name=$jobName"

return api.listNamespacedPod(namespace, null, null, null, null, selector, null, null, null, null, false).items
return api.listNamespacedPod(namespace).labelSelector(selector).watch(false).execute().items
}

/**
Expand All @@ -198,7 +198,7 @@ internal class JobHandler(
pod.metadata?.name?.let { podName ->
logger.info("Deleting pod $podName.")
runCatching {
api.deleteNamespacedPod(podName, namespace, null, null, null, null, null, null)
api.deleteNamespacedPod(podName, namespace).execute()
}.onFailure { e ->
logger.error("Could not remove pod '$podName': $e.")
}
Expand Down Expand Up @@ -235,5 +235,5 @@ internal class JobHandler(
* Return a list with the jobs in the configured namespace. Apply the given [labelSelector] filter.
*/
private fun listJobs(labelSelector: String? = null): List<V1Job> =
jobApi.listNamespacedJob(namespace, null, null, null, null, labelSelector, null, null, null, null, false).items
jobApi.listNamespacedJob(namespace).labelSelector(labelSelector).watch(false).execute().items
}
18 changes: 3 additions & 15 deletions transport/kubernetes-jobmonitor/src/main/kotlin/JobWatchHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ internal class JobWatchHelper(
* jobs using the given [jobApi].
*/
private fun fetchResourceVersion(jobApi: BatchV1Api, namespace: String): String? =
jobApi.listNamespacedJob(namespace, null, false, null, null, null, 1, null, null, null, false)
jobApi.listNamespacedJob(namespace).allowWatchBookmarks(false).limit(1).watch(false).execute()
.metadata?.resourceVersion
}

Expand Down Expand Up @@ -125,20 +125,8 @@ internal class JobWatchHelper(

return Watch.createWatch<V1Job?>(
jobApi.apiClient,
jobApi.listNamespacedJobCall(
namespace,
null,
true,
null,
null,
null,
null,
resourceVersion,
null,
null,
true,
null
),
jobApi.listNamespacedJob(namespace).allowWatchBookmarks(true).resourceVersion(resourceVersion).watch(true)
.buildCall(null),
JOB_TYPE.type
).iterator()
}
Expand Down
206 changes: 79 additions & 127 deletions transport/kubernetes-jobmonitor/src/test/kotlin/JobHandlerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -68,34 +68,28 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val podList = V1PodList().apply { items = podNames.map(::createPod) }
every {
coreApi.listNamespacedPod(
NAMESPACE,
null,
null,
null,
null,
"job-name=$jobName",
null,
null,
null,
null,
false
)
} returns podList
every { coreApi.deleteNamespacedPod(any(), any(), any(), any(), any(), any(), any(), any()) } returns null
every { jobApi.deleteNamespacedJob(any(), any(), any(), any(), any(), any(), any(), any()) } returns null

val request = mockk<CoreV1Api.APIlistNamespacedPodRequest> {
every { execute() } returns podList
}

every { coreApi.listNamespacedPod(NAMESPACE) } returns request
every { request.labelSelector("job-name=$jobName") } returns request
every { request.watch(false) } returns request

every { coreApi.deleteNamespacedPod(any(), any()) } returns null
every { jobApi.deleteNamespacedJob(any(), any()) } returns null

val handler = createJobHandler(jobApi, coreApi)

handler.deleteAndNotifyIfFailed(job)

verify {
podNames.forAll {
coreApi.deleteNamespacedPod(it, NAMESPACE, null, null, null, null, null, null)
coreApi.deleteNamespacedPod(it, NAMESPACE)
}

jobApi.deleteNamespacedJob(jobName, NAMESPACE, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, NAMESPACE)
}
}

Expand All @@ -108,7 +102,7 @@ class JobHandlerTest : WordSpec({
handler.deleteAndNotifyIfFailed(V1Job())

verify(exactly = 0) {
jobApi.deleteNamespacedJob(any(), any(), any(), any(), any(), any(), any(), any())
jobApi.deleteNamespacedJob(any(), any())
}
}

Expand All @@ -121,38 +115,28 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val podList = V1PodList().apply { items = podNames.map(::createPod) }
every {
coreApi.listNamespacedPod(
NAMESPACE,
null,
null,
null,
null,
"job-name=$jobName",
null,
null,
null,
null,
false
)
} returns podList
every {
coreApi.deleteNamespacedPod(any(), any(), any(), any(), any(), any(), any(), any())
} throws IOException("Test exception when deleting pod.")
every {
jobApi.deleteNamespacedJob(any(), any(), any(), any(), any(), any(), any(), any())
} throws IOException("Test exception when deleting job.")

val request = mockk<CoreV1Api.APIlistNamespacedPodRequest> {
every { execute() } returns podList
}

every { coreApi.listNamespacedPod(NAMESPACE) } returns request
every { request.labelSelector("job-name=$jobName") } returns request
every { request.watch(false) } returns request

every { coreApi.deleteNamespacedPod(any(), any()) } throws IOException("Test exception when deleting pod.")
every { jobApi.deleteNamespacedJob(any(), any()) } throws IOException("Test exception when deleting job.")

val handler = createJobHandler(jobApi, coreApi)

handler.deleteAndNotifyIfFailed(job)

verify {
podNames.forAll {
coreApi.deleteNamespacedPod(it, NAMESPACE, null, null, null, null, null, null)
coreApi.deleteNamespacedPod(it, NAMESPACE)
}

jobApi.deleteNamespacedJob(jobName, NAMESPACE, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, NAMESPACE)
}
}

Expand All @@ -170,23 +154,17 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val podList = V1PodList().apply { items = podNames.map(::createPod) }
every {
coreApi.listNamespacedPod(
NAMESPACE,
null,
null,
null,
null,
"job-name=$jobName",
null,
null,
null,
null,
false
)
} returns podList
every { coreApi.deleteNamespacedPod(any(), any(), any(), any(), any(), any(), any(), any()) } returns null
every { jobApi.deleteNamespacedJob(any(), any(), any(), any(), any(), any(), any(), any()) } returns null

val request = mockk<CoreV1Api.APIlistNamespacedPodRequest> {
every { execute() } returns podList
}

every { coreApi.listNamespacedPod(NAMESPACE) } returns request
every { request.labelSelector("job-name=$jobName") } returns request
every { request.watch(false) } returns request

every { coreApi.deleteNamespacedPod(any(), any()) } returns null
every { jobApi.deleteNamespacedJob(any(), any()) } returns null

val notifier = mockk<FailedJobNotifier> {
every { sendFailedJobNotification(job) } just runs
Expand All @@ -200,10 +178,10 @@ class JobHandlerTest : WordSpec({
notifier.sendFailedJobNotification(job)

podNames.forAll {
coreApi.deleteNamespacedPod(it, NAMESPACE, null, null, null, null, null, null)
coreApi.deleteNamespacedPod(it, NAMESPACE)
}

jobApi.deleteNamespacedJob(jobName, NAMESPACE, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, NAMESPACE)
}
}

Expand All @@ -226,7 +204,7 @@ class JobHandlerTest : WordSpec({
handler.deleteAndNotifyIfFailed(job)

verify(exactly = 0) {
jobApi.deleteNamespacedJob(any(), any(), any(), any(), any(), any(), any(), any())
jobApi.deleteNamespacedJob(any(), any())
}
}

Expand All @@ -243,22 +221,16 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val podList = V1PodList()
every {
coreApi.listNamespacedPod(
NAMESPACE,
null,
null,
null,
null,
"job-name=$jobName",
null,
null,
null,
null,
false
)
} returns podList
every { coreApi.deleteNamespacedPod(any(), any(), any(), any(), any(), any(), any(), any()) } returns null

val request = mockk<CoreV1Api.APIlistNamespacedPodRequest> {
every { execute() } returns podList
}

every { coreApi.listNamespacedPod(NAMESPACE) } returns request
every { request.labelSelector("job-name=$jobName") } returns request
every { request.watch(false) } returns request

every { coreApi.deleteNamespacedPod(any(), any()) } returns null

val notifier = mockk<FailedJobNotifier> {
every { sendFailedJobNotification(job) } just runs
Expand All @@ -272,7 +244,7 @@ class JobHandlerTest : WordSpec({
verify(exactly = 1) {
notifier.sendFailedJobNotification(job)

jobApi.deleteNamespacedJob(jobName, NAMESPACE, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, NAMESPACE)
}
}

Expand All @@ -289,22 +261,16 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val podList = V1PodList()
every {
coreApi.listNamespacedPod(
NAMESPACE,
null,
null,
null,
null,
any(),
null,
null,
null,
null,
false
)
} returns podList
every { coreApi.deleteNamespacedPod(any(), any(), any(), any(), any(), any(), any(), any()) } returns null

val request = mockk<CoreV1Api.APIlistNamespacedPodRequest> {
every { execute() } returns podList
}

every { coreApi.listNamespacedPod(NAMESPACE) } returns request
every { request.labelSelector(any()) } returns request
every { request.watch(false) } returns request

every { coreApi.deleteNamespacedPod(any(), any()) } returns null

val notifier = mockk<FailedJobNotifier> {
every { sendFailedJobNotification(job) } just runs
Expand All @@ -321,7 +287,7 @@ class JobHandlerTest : WordSpec({
verify(exactly = 2) {
notifier.sendFailedJobNotification(job)

jobApi.deleteNamespacedJob(jobName, NAMESPACE, null, null, null, null, null, null)
jobApi.deleteNamespacedJob(jobName, NAMESPACE)
}
}
}
Expand Down Expand Up @@ -353,21 +319,14 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val jobList = V1JobList().apply { items = listOf(matchJob1, runningJob, youngJob, matchJob2, matchJob3) }
every {
jobApi.listNamespacedJob(
NAMESPACE,
null,
null,
null,
null,
null,
null,
null,
null,
null,
false
)
} returns jobList

val request = mockk<BatchV1Api.APIlistNamespacedJobRequest> {
every { execute() } returns jobList
}

every { jobApi.listNamespacedJob(NAMESPACE) } returns request
every { request.labelSelector(null) } returns request
every { request.watch(false) } returns request

val handler = createJobHandler(jobApi, coreApi)
val jobs = handler.findJobsCompletedBefore(referenceTime)
Expand All @@ -385,21 +344,14 @@ class JobHandlerTest : WordSpec({
val jobApi = mockk<BatchV1Api>()

val jobList = V1JobList().apply { items = listOf(job1, job2) }
every {
jobApi.listNamespacedJob(
NAMESPACE,
null,
null,
null,
null,
"ort-worker=analyzer",
null,
null,
null,
null,
false
)
} returns jobList

val request = mockk<BatchV1Api.APIlistNamespacedJobRequest> {
every { execute() } returns jobList
}

every { jobApi.listNamespacedJob(NAMESPACE) } returns request
every { request.labelSelector("ort-worker=analyzer") } returns request
every { request.watch(false) } returns request

val handler = createJobHandler(jobApi, coreApi)
val jobs = handler.findJobsForWorker(AnalyzerEndpoint)
Expand Down
Loading

0 comments on commit d4dafee

Please sign in to comment.