package org.arquillian.cube.openshift.impl.client;
import io.fabric8.kubernetes.api.builder.v2_2.TypedVisitor;
import io.fabric8.kubernetes.clnt.v2_2.Config;
import io.fabric8.kubernetes.clnt.v2_2.ConfigBuilder;
import org.arquillian.cube.kubernetes.api.Configuration;
import org.arquillian.cube.kubernetes.impl.event.AfterStart;
import org.jboss.arquillian.core.api.InstanceProducer;
import org.jboss.arquillian.core.api.annotation.ApplicationScoped;
import org.jboss.arquillian.core.api.annotation.Inject;
import org.jboss.arquillian.core.api.annotation.Observes;
import org.jboss.arquillian.test.spi.event.suite.AfterSuite;
public class OpenShiftClientCreator {
@Inject
@ApplicationScoped
private InstanceProducer<OpenShiftClient> openShiftClientProducer;
public void createClient(@Observes AfterStart afterStart, Configuration conf) {
if (!(conf instanceof CubeOpenShiftConfiguration)) {
return;
}
CubeOpenShiftConfiguration configuration = (CubeOpenShiftConfiguration) conf;
System.setProperty("KUBERNETES_TRUST_CERT", "true");
// override defaults for master and namespace
final Config config = new ConfigBuilder()
.withMasterUrl(configuration.getMasterUrl().toString())
.withNamespace(configuration.getNamespace())
.withTrustCerts(true)
.accept(new TypedVisitor<ConfigBuilder>() {
@Override
public void visit(ConfigBuilder b) {
b.withNoProxy(b.getNoProxy() == null ? new String[0] : b.getNoProxy());
}
}).build();
openShiftClientProducer.set(
createClient(config, configuration.getNamespace(), configuration.shouldKeepAliveGitServer()));
}
public void clean(@Observes AfterSuite event, OpenShiftClient client) throws Exception {
client.shutdown();
}
public OpenShiftClient createClient(Config openShiftConfig, String namespace, boolean keepAliveGitServer) {
return new OpenShiftClient(openShiftConfig, namespace, keepAliveGitServer);
}
}