Skip to content

Commit

Permalink
Fix Knative/OpenShift client environment check
Browse files Browse the repository at this point in the history
  • Loading branch information
michalvavrik committed Sep 23, 2022
1 parent a09fdca commit 75d15be
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,30 @@

import static io.quarkus.kubernetes.deployment.Constants.KNATIVE;

import java.util.Collection;
import java.util.List;
import java.util.Optional;

import io.fabric8.knative.client.KnativeClient;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.kubernetes.client.spi.KubernetesClientBuildItem;
import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
import io.quarkus.kubernetes.spi.GeneratedKubernetesResourceBuildItem;
import io.quarkus.kubernetes.spi.KubernetesDeploymentClusterBuildItem;
import io.quarkus.maven.dependency.ResolvedDependency;

public class KnativeDeployer {

@BuildStep
public void checkEnvironment(Optional<SelectedKubernetesDeploymentTargetBuildItem> selectedDeploymentTarget,
List<GeneratedKubernetesResourceBuildItem> resources,
KubernetesClientBuildItem client, BuildProducer<KubernetesDeploymentClusterBuildItem> deploymentCluster) {
CurateOutcomeBuildItem curateOutcome, BuildProducer<KubernetesDeploymentClusterBuildItem> deploymentCluster) {
selectedDeploymentTarget.ifPresent(target -> {
if (!KubernetesDeploy.INSTANCE.checkSilently()) {
return;
}
if (target.getEntry().getName().equals(KNATIVE)) {
if (client.getClient().isAdaptable(KnativeClient.class)) {
// Client can be adapted KnativeClient if there is io.fabric8:knative-client dependency
if (hasKnativeClientExtension(curateOutcome.getApplicationModel().getDependencies())) {
deploymentCluster.produce(new KubernetesDeploymentClusterBuildItem(KNATIVE));
} else {
throw new IllegalStateException(
Expand All @@ -32,4 +34,15 @@ public void checkEnvironment(Optional<SelectedKubernetesDeploymentTargetBuildIte
}
});
}

private boolean hasKnativeClientExtension(Collection<ResolvedDependency> dependencies) {
if (dependencies != null && !dependencies.isEmpty()) {
for (ResolvedDependency dependency : dependencies) {
if ("knative-client".equals(dependency.getArtifactId()) && "io.fabric8".equals(dependency.getGroupId())) {
return true;
}
}
}
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,30 @@

import static io.quarkus.kubernetes.deployment.Constants.OPENSHIFT;

import java.util.Collection;
import java.util.List;
import java.util.Optional;

import io.fabric8.openshift.client.OpenShiftClient;
import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.kubernetes.client.spi.KubernetesClientBuildItem;
import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
import io.quarkus.kubernetes.spi.GeneratedKubernetesResourceBuildItem;
import io.quarkus.kubernetes.spi.KubernetesDeploymentClusterBuildItem;
import io.quarkus.maven.dependency.ResolvedDependency;

public class OpenshiftDeployer {

@BuildStep
public void checkEnvironment(Optional<SelectedKubernetesDeploymentTargetBuildItem> selectedDeploymentTarget,
List<GeneratedKubernetesResourceBuildItem> resources,
KubernetesClientBuildItem client, BuildProducer<KubernetesDeploymentClusterBuildItem> deploymentCluster) {
CurateOutcomeBuildItem curateOutcome, BuildProducer<KubernetesDeploymentClusterBuildItem> deploymentCluster) {
selectedDeploymentTarget.ifPresent(target -> {
if (!KubernetesDeploy.INSTANCE.checkSilently()) {
return;
}
if (target.getEntry().getName().equals(OPENSHIFT)) {
if (client.getClient().isAdaptable(OpenShiftClient.class)) {
// Client can be adapted OpenShiftClient if there is io.fabric8:openshift-client dependency
if (hasOpenShiftClientExtension(curateOutcome.getApplicationModel().getDependencies())) {
deploymentCluster.produce(new KubernetesDeploymentClusterBuildItem(OPENSHIFT));
} else {
throw new IllegalStateException(
Expand All @@ -33,4 +35,15 @@ public void checkEnvironment(Optional<SelectedKubernetesDeploymentTargetBuildIte
}
});
}

private boolean hasOpenShiftClientExtension(Collection<ResolvedDependency> dependencies) {
if (dependencies != null && !dependencies.isEmpty()) {
for (ResolvedDependency dependency : dependencies) {
if ("openshift-client".equals(dependency.getArtifactId()) && "io.fabric8".equals(dependency.getGroupId())) {
return true;
}
}
}
return false;
}
}

0 comments on commit 75d15be

Please sign in to comment.