io.quarkus.test.bootstrap.KubernetesExtensionBootstrap Maven / Gradle / Ivy
package io.quarkus.test.bootstrap;
import static io.quarkus.test.bootstrap.inject.KubectlClient.ENABLED_EPHEMERAL_NAMESPACES;
import java.nio.file.Path;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import io.quarkus.test.bootstrap.inject.KubectlClient;
import io.quarkus.test.configuration.PropertyLookup;
import io.quarkus.test.logging.Log;
import io.quarkus.test.scenarios.KubernetesScenario;
import io.quarkus.test.utils.FileUtils;
public class KubernetesExtensionBootstrap implements ExtensionBootstrap {
public static final String CLIENT = "kubectl-client";
private static final PropertyLookup DELETE_NAMESPACE_AFTER = new PropertyLookup("ts.kubernetes.delete.namespace.after.all",
Boolean.TRUE.toString());
private KubectlClient client;
@Override
public boolean appliesFor(ScenarioContext context) {
boolean isValidConfig = context.isAnnotationPresent(KubernetesScenario.class);
if (isValidConfig && !DELETE_NAMESPACE_AFTER.getAsBoolean() && ENABLED_EPHEMERAL_NAMESPACES.getAsBoolean()) {
Log.error("-Dts.kubernetes.delete.project.after.all=false is only supported with"
+ " -Dts.kubernetes.ephemeral.namespaces.enabled=false");
isValidConfig = false;
}
return isValidConfig;
}
@Override
public void beforeAll(ScenarioContext context) {
// if deleteNamespace and ephemeral namespaces are disabled then we are in debug mode. This mode is going to keep
// all scenario resources in order to allow you to debug by yourself
context.setDebug(!DELETE_NAMESPACE_AFTER.getAsBoolean() && !ENABLED_EPHEMERAL_NAMESPACES.getAsBoolean());
client = KubectlClient.create(context.getId());
}
@Override
public void afterAll(ScenarioContext context) {
if (DELETE_NAMESPACE_AFTER.getAsBoolean()) {
client.deleteNamespace();
}
}
@Override
public void updateServiceContext(ServiceContext context) {
context.put(CLIENT, client);
}
@Override
public Optional
© 2015 - 2025 Weber Informatics LLC | Privacy Policy