Skip to content

Commit 25c4866

Browse files
committed
Added first draft for K8s bridge implementation.
1 parent 0b21a4d commit 25c4866

5 files changed

Lines changed: 124 additions & 3 deletions

File tree

docker-java-bridge-k8s/pom.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@
3333
<artifactId>slf4j-api</artifactId>
3434
<version>${slf4j-api.version}</version>
3535
</dependency>
36+
<dependency>
37+
<groupId>org.slf4j</groupId>
38+
<artifactId>slf4j-simple</artifactId>
39+
<version>${slf4j-api.version}</version>
40+
<scope>test</scope>
41+
</dependency>
3642

3743
<dependency>
3844
<groupId>commons-lang</groupId>
@@ -46,6 +52,26 @@
4652
<version>3.0.1u2</version>
4753
<scope>provided</scope>
4854
</dependency>
55+
56+
<dependency>
57+
<groupId>org.junit.jupiter</groupId>
58+
<artifactId>junit-jupiter</artifactId>
59+
<version>5.7.2</version>
60+
<scope>test</scope>
61+
</dependency>
62+
<dependency>
63+
<groupId>org.mockito</groupId>
64+
<artifactId>mockito-core</artifactId>
65+
<version>${mockito.version}</version>
66+
<scope>test</scope>
67+
</dependency>
68+
<dependency>
69+
<groupId>org.mockito</groupId>
70+
<artifactId>mockito-junit-jupiter</artifactId>
71+
<version>${mockito.version}</version>
72+
<scope>test</scope>
73+
</dependency>
74+
4975
</dependencies>
5076

5177
<build>

docker-java-bridge-k8s/src/main/java/com/github/dockerjava/k8s/K8sBridgeDockerClientImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
import io.kubernetes.client.openapi.ApiClient;
9292
import io.kubernetes.client.openapi.Configuration;
9393
import io.kubernetes.client.util.Config;
94+
import com.github.dockerjava.k8s.command.VersionCmdImpl;
9495

9596
public class K8sBridgeDockerClientImpl implements DockerClient, Closeable {
9697

@@ -135,7 +136,7 @@ public PingCmd pingCmd() {
135136

136137
@Override
137138
public VersionCmd versionCmd() {
138-
throw new UnsupportedOperationException("Not supported yet.");
139+
return new VersionCmdImpl(client);
139140
}
140141

141142
@Override
@@ -519,7 +520,6 @@ public RemoveConfigCmd removeConfigCmd(String configId) {
519520
}
520521

521522
@Override
522-
public void close() throws IOException {
523-
throw new UnsupportedOperationException("Not supported yet.");
523+
public void close() {
524524
}
525525
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.github.dockerjava.k8s.command;
2+
3+
import com.github.dockerjava.api.command.VersionCmd;
4+
import com.github.dockerjava.api.exception.DockerException;
5+
import io.kubernetes.client.openapi.ApiClient;
6+
import io.kubernetes.client.openapi.ApiException;
7+
import io.kubernetes.client.openapi.models.VersionInfo;
8+
import io.kubernetes.client.util.version.Version;
9+
import org.apache.commons.lang3.builder.ToStringBuilder;
10+
import org.apache.commons.lang3.builder.ToStringStyle;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
import java.io.IOException;
15+
16+
public class VersionCmdImpl implements VersionCmd {
17+
18+
private static final Logger LOGGER = LoggerFactory.getLogger(VersionCmdImpl.class);
19+
20+
private final ApiClient client;
21+
22+
public VersionCmdImpl(final ApiClient client) {
23+
this.client = client;
24+
}
25+
26+
@Override
27+
public com.github.dockerjava.api.model.Version exec() {
28+
Version k8sVersion = new Version(client);
29+
VersionInfo info;
30+
try {
31+
info = k8sVersion.getVersion();
32+
LOGGER.info("Got K8s {}", ToStringBuilder.reflectionToString(info, ToStringStyle.SHORT_PREFIX_STYLE));
33+
} catch (ApiException | IOException e) {
34+
throw new DockerException("Could not get K8s version.", 500, e);
35+
}
36+
37+
com.github.dockerjava.api.model.Version dockerVersion = new com.github.dockerjava.api.model.Version();
38+
return dockerVersion;
39+
}
40+
41+
@Override
42+
public void close() {
43+
}
44+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.github.dockerjava.k8s;
2+
3+
import com.github.dockerjava.api.DockerClient;
4+
import com.github.dockerjava.api.command.VersionCmd;
5+
import org.junit.jupiter.api.Test;
6+
7+
import static org.junit.jupiter.api.Assertions.*;
8+
9+
class K8sBridgeDockerClientImplTest {
10+
11+
@Test
12+
void versionCmd() throws Exception {
13+
DockerClient client = K8sBridgeDockerClientImpl.getInstance();
14+
VersionCmd versionCmd = client.versionCmd();
15+
assertNotNull(versionCmd);
16+
}
17+
18+
@Test
19+
void close() throws Exception {
20+
DockerClient client = K8sBridgeDockerClientImpl.getInstance();
21+
client.close();
22+
}
23+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.github.dockerjava.k8s.command;
2+
3+
import com.github.dockerjava.api.model.Version;
4+
import io.kubernetes.client.openapi.ApiClient;
5+
import io.kubernetes.client.util.ClientBuilder;
6+
import io.kubernetes.client.util.KubeConfig;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.mockito.junit.jupiter.MockitoExtension;
10+
11+
import java.io.FileReader;
12+
import java.io.IOException;
13+
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
16+
@ExtendWith(MockitoExtension.class)
17+
class VersionCmdImplTest {
18+
19+
@Test
20+
void execLocalKubeConfigClient() throws IOException {
21+
String kubeConfigPath = System.getenv("HOME") + "/.kube/config";
22+
ApiClient client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();
23+
24+
VersionCmdImpl cmd = new VersionCmdImpl(client);
25+
Version version = cmd.exec();
26+
assertEquals(null, version.getGoVersion());
27+
}
28+
}

0 commit comments

Comments
 (0)