Skip to content
This repository has been archived by the owner on Oct 5, 2022. It is now read-only.

KubernetesFactory now supports enabling/disabling verification via sy… #4022

Merged
merged 2 commits into from May 29, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 14 additions & 10 deletions components/fabric8-cdi/pom.xml
Expand Up @@ -107,21 +107,25 @@
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>



<!-- mockserver -->
<dependency>
<groupId>com.google.mockwebserver</groupId>
<artifactId>mockwebserver</artifactId>
<version>${mockwebserver.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<scope>test</scope>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/ExtensionTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
Expand Down
Expand Up @@ -16,8 +16,15 @@

package io.fabric8.cdi.weld;

import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import com.google.mockwebserver.Dispatcher;
import com.google.mockwebserver.MockResponse;
import com.google.mockwebserver.MockWebServer;
import com.google.mockwebserver.RecordedRequest;
import io.fabric8.cdi.deltaspike.DeltaspikeTestBase;
import io.fabric8.kubernetes.api.KubernetesClient;
import io.fabric8.kubernetes.api.KubernetesFactory;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ArchivePaths;
Expand All @@ -41,21 +48,76 @@
@RunWith(Arquillian.class)
public class ExtensionTest {

@BeforeClass
public static void setUp() {
System.setProperty("MY_CONFIG_TEST", "value1");
System.setProperty("MY_OTHER_CONFIG_TEST", "value2");
System.setProperty("FABRIC8_CONSOLE_SERVICE_PROTOCOL", "https");
System.setProperty("KUBERNETES_PROTOCOL", "https");
}
private static final MockWebServer server = new MockWebServer();

private static String KUBERNETES_SERVICE_JSON;
private static String FABRIC8_CONSOLE_SERVICE_JSON;
private static String APP_LIBRARY_SERVICE_JSON;

@Deployment
public static WebArchive createDeployment() {
return ShrinkWrap.create(WebArchive.class)
.addClasses(StringToURL.class, URLToConnection.class, NestingFactoryBean.class, ServiceStringBean.class, ServiceUrlBean.class)
.addClasses(DeltaspikeTestBase.getDeltaSpikeHolders())
.addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
.addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml").resolve("org.apache.deltaspike.core:deltaspike-core-impl").withTransitivity().as(File.class));
.addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml")
.resolve(
"org.apache.deltaspike.core:deltaspike-core-impl",
"com.google.mockwebserver:mockwebserver"
)
.withTransitivity().as(File.class));
}

@BeforeClass
public static void setUpClass() throws Exception {
System.setProperty("MY_CONFIG_TEST", "value1");
System.setProperty("MY_OTHER_CONFIG_TEST", "value2");
System.setProperty("FABRIC8_CONSOLE_SERVICE_PROTOCOL", "https");
System.setProperty("KUBERNETES_PROTOCOL", "https");

KUBERNETES_SERVICE_JSON = Resources.toString(ExtensionTest.class.getResource("/mock/kubernetes-service.json"), Charsets.UTF_8);
FABRIC8_CONSOLE_SERVICE_JSON = Resources.toString(ExtensionTest.class.getResource("/mock/kubernetes-service.json"), Charsets.UTF_8);
APP_LIBRARY_SERVICE_JSON = Resources.toString(ExtensionTest.class.getResource("/mock/app-library-service.json"), Charsets.UTF_8);

server.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (request.getPath().equals("/api/v1beta3/namespaces/default/services/kubernetes")) {
return new MockResponse()
.setResponseCode(200)
.setHeader("Content-Type", "application/json")
.setBody(KUBERNETES_SERVICE_JSON);
} else if (request.getPath().equals("/api/v1beta3/namespaces/default/services/fabric8-console-service")) {
return new MockResponse()
.setResponseCode(200)
.setHeader("Content-Type", "application/json")
.setBody(FABRIC8_CONSOLE_SERVICE_JSON);
} else if (request.getPath().equals("/api/v1beta3/namespaces/default/services/app-library")) {
return new MockResponse()
.setResponseCode(200)
.setHeader("Content-Type", "application/json")
.setBody(APP_LIBRARY_SERVICE_JSON);
} else if (request.getPath().equals("/osapi/v1beta3/namespaces/default/routes")) {
return new MockResponse()
.setResponseCode(200)
.setHeader("Content-Type", "application/json")
.setBody("{}");
} else if (request.getPath().equals("/api/v1beta3/namespaces/default/endpoints")) {
return new MockResponse()
.setResponseCode(200)
.setHeader("Content-Type", "application/json")
.setBody("{}");
} else {
return new MockResponse().setResponseCode(401);
}
}
});

server.play();
System.setProperty(KubernetesFactory.KUBERNETES_MASTER_SYSTEM_PROPERTY, "http://" + server.getHostName() + ":" + server.getPort());
System.setProperty(KubernetesFactory.KUBERNETES_TRUST_ALL_CERIFICATES, "true");
System.setProperty(KubernetesFactory.KUBERNETES_VERIFY_SYSTEM_PROPERTY, "false");

}

@Inject
Expand Down
@@ -0,0 +1,33 @@
{
"kind": "Service",
"apiVersion": "v1beta3",
"metadata": {
"name": "app-library",
"namespace": "default",
"selfLink": "/api/v1beta3/namespaces/default/services/app-library",
"uid": "a3c1eec5-046f-11e5-9ad2-0800275503ae",
"resourceVersion": "83",
"creationTimestamp": "2015-05-27T12:55:23Z",
"labels": {
"component": "AppLibrary",
"provider": "fabric8"
}
},
"spec": {
"ports": [
{
"name": "",
"protocol": "TCP",
"port": 80,
"targetPort": 8080
}
],
"selector": {
"component": "AppLibrary",
"provider": "fabric8"
},
"portalIP": "172.30.17.9",
"sessionAffinity": "None"
},
"status": {}
}
@@ -0,0 +1,21 @@
{
"kind": "Service",
"metadata": {
"name": "fabric8-console-service",
"namespace": "default",
"selfLink": "/api/v1beta3/namespaces/default/services/fabric8-console-service",
"uid": "a49c15ec-046f-11e5-9ad2-0800275503ae",
"resourceVersion": "95",
"creationTimestamp": "2015-05-27T12:55:25Z"
},
"spec": {
"ports": [
{
"name": "",
"protocol": "TCP",
"port": 80,
"targetPort": 9090
}
]
}
}
@@ -0,0 +1,29 @@
{
"kind": "Service",
"metadata": {
"name": "kubernetes",
"namespace": "default",
"selfLink": "/api/v1beta3/namespaces/default/services/kubernetes",
"uid": "8bb1621b-046f-11e5-9ad2-0800275503ae",
"resourceVersion": "5",
"creationTimestamp": "2015-05-27T12:54:43Z",
"labels": {
"component": "apiserver",
"provider": "kubernetes"
}
},
"spec": {
"ports": [
{
"name": "",
"protocol": "TCP",
"port": 443,
"targetPort": 443
}
],
"selector": null,
"portalIP": "172.30.17.2",
"sessionAffinity": "None"
},
"status": {}
}
Expand Up @@ -65,6 +65,7 @@ public class KubernetesFactory {
public static final String KUBERNETES_CLIENT_KEY_ALGO_ENV_VAR = "KUBERNETES_CLIENT_KEY_ALGO";
public static final String KUBERNETES_CLIENT_KEY_PASSWORD_ENV_VAR = "KUBERNETES_CLIENT_KEY_PASSWORD";
public static final String KUBERNETES_MASTER_SYSTEM_PROPERTY = "kubernetes.master";
public static final String KUBERNETES_VERIFY_SYSTEM_PROPERTY = "kubernetes.verify";

private String address;
private boolean verifyAddress = true;
Expand Down Expand Up @@ -94,8 +95,7 @@ public KubernetesFactory(String address) {
}

public KubernetesFactory(String address, boolean writeable) {
init();
initAddress(address, writeable);
this (address, writeable, Boolean.parseBoolean(System.getProperty(KUBERNETES_VERIFY_SYSTEM_PROPERTY, "true")));
}

public KubernetesFactory(String address, boolean writeable, boolean verifyAddress) {
Expand Down
61 changes: 0 additions & 61 deletions pom.xml
Expand Up @@ -2127,67 +2127,6 @@
<artifactId>hadoop-tools</artifactId>
<version>${hadoop.version}</version>
</dependency>
<!-- Jetty -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-xml</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jndi</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>${jetty.version}</version>
</dependency>

<!-- Pax Logging -->
<dependency>
Expand Down