From dadfb4d72ec00644467e457ab001050b4362fe42 Mon Sep 17 00:00:00 2001 From: Janis Date: Sat, 2 May 2026 20:41:01 +0200 Subject: [PATCH 1/2] fix(coordinator): use genericKubernetesResources API for Argo Rollout scaling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fabric8 disallows client.resources(classOf[GenericKubernetesResource]) — throws KubernetesClientException at runtime. Switch to genericKubernetesResources(apiVersion, kind) which is the correct API for CRDs. Co-Authored-By: Claude Haiku 4.5 --- .../scala/de/nowchess/coordinator/service/AutoScaler.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala index 5a074c8..bc9dcfc 100644 --- a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala +++ b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala @@ -30,6 +30,9 @@ class AutoScaler: if kubeClientInstance.isUnsatisfied then None else Some(kubeClientInstance.get()) + private val argoApiVersion = "argoproj.io/v1alpha1" + private val argoKind = "Rollout" + // scalafix:off DisableSyntax.asInstanceOf // scalafix:off DisableSyntax.isInstanceOf private def rolloutSpec(rollout: GenericKubernetesResource): Option[java.util.Map[String, AnyRef]] = @@ -61,7 +64,7 @@ class AutoScaler: try Option( kube - .resources(classOf[GenericKubernetesResource]) + .genericKubernetesResources(argoApiVersion, argoKind) .inNamespace(config.k8sNamespace) .withName(config.k8sRolloutName) .get(), @@ -102,7 +105,7 @@ class AutoScaler: try Option( kube - .resources(classOf[GenericKubernetesResource]) + .genericKubernetesResources(argoApiVersion, argoKind) .inNamespace(config.k8sNamespace) .withName(config.k8sRolloutName) .get(), -- 2.52.0 From 1470253aeb6a1d46b4cc4b72b5abdfae720a1081 Mon Sep 17 00:00:00 2001 From: Janis Date: Sat, 2 May 2026 22:25:36 +0200 Subject: [PATCH 2/2] fix(coordinator): improve type safety in rolloutSpec method --- .../scala/de/nowchess/coordinator/service/AutoScaler.scala | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala index bc9dcfc..304f39d 100644 --- a/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala +++ b/modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala @@ -34,13 +34,11 @@ class AutoScaler: private val argoKind = "Rollout" // scalafix:off DisableSyntax.asInstanceOf - // scalafix:off DisableSyntax.isInstanceOf private def rolloutSpec(rollout: GenericKubernetesResource): Option[java.util.Map[String, AnyRef]] = - Option(rollout.get("spec")).collect { - case m if m.isInstanceOf[java.util.Map[?, ?]] => m.asInstanceOf[java.util.Map[String, AnyRef]] + Option(rollout.get[AnyRef]("spec")).collect { + case m: java.util.Map[?, ?] => m.asInstanceOf[java.util.Map[String, AnyRef]] } // scalafix:on DisableSyntax.asInstanceOf - // scalafix:on DisableSyntax.isInstanceOf def checkAndScale: Unit = if config.autoScaleEnabled then -- 2.52.0