Skip to content

Commit

Permalink
Merge pull request quarkusio#33042 from Sgitario/33016
Browse files Browse the repository at this point in the history
Print valid api versions when specifying one in K8s Client Dev Services
  • Loading branch information
Sgitario authored May 11, 2023
2 parents 046c31d + 4e32f4a commit 936737b
Showing 1 changed file with 15 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Stream;
import java.util.stream.Collectors;

import org.jboss.logging.Logger;
import org.testcontainers.DockerClientFactory;
Expand Down Expand Up @@ -199,17 +199,19 @@ private RunningDevService startKubernetes(DockerStatusBuildItem dockerStatusBuil
switch (config.flavor) {
case api_only:
container = new ApiServerContainer(
config.apiVersion.map(version -> findOrElseThrow(version, ApiServerContainerVersion.class))
config.apiVersion
.map(version -> findOrElseThrow(config.flavor, version, ApiServerContainerVersion.class))
.orElseGet(() -> latest(ApiServerContainerVersion.class)));
break;
case k3s:
container = new K3sContainer(
config.apiVersion.map(version -> findOrElseThrow(version, K3sContainerVersion.class))
config.apiVersion.map(version -> findOrElseThrow(config.flavor, version, K3sContainerVersion.class))
.orElseGet(() -> latest(K3sContainerVersion.class)));
break;
case kind:
container = new KindContainer(
config.apiVersion.map(version -> findOrElseThrow(version, KindContainerVersion.class))
config.apiVersion
.map(version -> findOrElseThrow(config.flavor, version, KindContainerVersion.class))
.orElseGet(() -> latest(KindContainerVersion.class)));
break;
default:
Expand Down Expand Up @@ -241,12 +243,17 @@ private RunningDevService startKubernetes(DockerStatusBuildItem dockerStatusBuil
.orElseGet(defaultKubernetesClusterSupplier);
}

<T extends KubernetesVersionEnum<T>> T findOrElseThrow(final String version, final Class<T> versions) {
<T extends KubernetesVersionEnum<T>> T findOrElseThrow(final Flavor flavor, final String version, final Class<T> versions) {
final String versionWithPrefix = !version.startsWith("v") ? "v" + version : version;
return Stream.of(versions.getEnumConstants())
.filter(v -> v.descriptor().getKubernetesVersion().equalsIgnoreCase(versionWithPrefix))
return KubernetesVersionEnum.ascending(versions)
.stream()
.filter(v -> v.descriptor().getKubernetesVersion().startsWith(versionWithPrefix))
.findFirst()
.orElseThrow();
.orElseThrow(() -> new IllegalArgumentException(
String.format("Invalid API version '%s' for flavor '%s'. Options are: [%s]", versionWithPrefix, flavor,
KubernetesVersionEnum.ascending(versions).stream()
.map(v -> v.descriptor().getKubernetesVersion())
.collect(Collectors.joining(", ")))));
}

private Map<String, String> getKubernetesClientConfigFromKubeConfig(KubeConfig kubeConfig) {
Expand Down

0 comments on commit 936737b

Please sign in to comment.