Skip to content

Commit 5b85b00

Browse files
authored
Merge pull request #21 from brendandburns/exec
Initial implementation of Exec.
2 parents 27b164e + b38f276 commit 5b85b00

File tree

6 files changed

+373
-24
lines changed

6 files changed

+373
-24
lines changed

examples/pom.xml

+24-19
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,29 @@
1919
<artifactId>client-java-util</artifactId>
2020
<version>1.0-SNAPSHOT</version>
2121
</dependency>
22-
<!-- test dependencies -->
23-
<dependency>
24-
<groupId>junit</groupId>
25-
<artifactId>junit</artifactId>
26-
<version>${junit-version}</version>
27-
<scope>test</scope>
28-
</dependency>
22+
<dependency>
23+
<groupId>com.google.guava</groupId>
24+
<artifactId>guava</artifactId>
25+
<version>22.0</version>
26+
</dependency>
27+
<!-- test dependencies -->
28+
<dependency>
29+
<groupId>junit</groupId>
30+
<artifactId>junit</artifactId>
31+
<version>${junit-version}</version>
32+
<scope>test</scope>
33+
</dependency>
2934
</dependencies>
30-
<properties>
31-
<java.version>1.7</java.version>
32-
<maven.compiler.source>${java.version}</maven.compiler.source>
33-
<maven.compiler.target>${java.version}</maven.compiler.target>
34-
<swagger-core-version>1.5.12</swagger-core-version>
35-
<okhttp-version>2.7.5</okhttp-version>
36-
<gson-version>2.6.2</gson-version>
37-
<jodatime-version>2.9.3</jodatime-version>
38-
<maven-plugin-version>1.0.0</maven-plugin-version>
39-
<junit-version>4.12</junit-version>
40-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
41-
</properties>
35+
<properties>
36+
<java.version>1.7</java.version>
37+
<maven.compiler.source>${java.version}</maven.compiler.source>
38+
<maven.compiler.target>${java.version}</maven.compiler.target>
39+
<swagger-core-version>1.5.12</swagger-core-version>
40+
<okhttp-version>2.7.5</okhttp-version>
41+
<gson-version>2.6.2</gson-version>
42+
<jodatime-version>2.9.3</jodatime-version>
43+
<maven-plugin-version>1.0.0</maven-plugin-version>
44+
<junit-version>4.12</junit-version>
45+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
46+
</properties>
4247
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package io.kubernetes.client.examples;
2+
3+
import io.kubernetes.client.ApiClient;
4+
import io.kubernetes.client.ApiException;
5+
import io.kubernetes.client.Configuration;
6+
import io.kubernetes.client.Exec;
7+
import io.kubernetes.client.apis.CoreV1Api;
8+
import io.kubernetes.client.models.V1Pod;
9+
import io.kubernetes.client.models.V1PodList;
10+
import io.kubernetes.client.util.Config;
11+
12+
import com.google.common.io.ByteStreams;
13+
14+
import java.io.BufferedReader;
15+
import java.io.InputStreamReader;
16+
import java.io.IOException;
17+
import java.io.OutputStream;
18+
19+
/**
20+
* A simple example of how to use the Java API
21+
*
22+
* Requires kubectl proxy running
23+
*
24+
* Easiest way to run this:
25+
* mvn exec:java -Dex.mainClass="io.kubernetes.client.examples.Example"
26+
*
27+
* From inside $REPO_DIR/kubernetes
28+
*/
29+
public class ExecExample {
30+
public static void main(String[] args) throws IOException, ApiException, InterruptedException {
31+
ApiClient client = Config.defaultClient();
32+
Configuration.setDefaultApiClient(client);
33+
34+
Exec exec = new Exec();
35+
final Process proc = exec.exec("default", "nginx-2371676037-czqx3", new String[] {"sh", "-c", "echo foo"}, true);
36+
37+
new Thread(new Runnable() {
38+
public void run() {
39+
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
40+
OutputStream output = proc.getOutputStream();
41+
try {
42+
while (true) {
43+
String line = in.readLine();
44+
output.write(line.getBytes());
45+
output.write('\n');
46+
output.flush();
47+
}
48+
} catch (IOException ex) {
49+
ex.printStackTrace();
50+
}
51+
}
52+
}).start();
53+
54+
new Thread(new Runnable() {
55+
public void run() {
56+
try {
57+
ByteStreams.copy(proc.getInputStream(), System.out);
58+
} catch (IOException ex) {
59+
ex.printStackTrace();
60+
}
61+
}
62+
}).start();
63+
64+
proc.waitFor();
65+
66+
System.exit(0);
67+
}
68+
}

examples/src/main/java/io/kubernetes/client/examples/WebSocketsExample.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.kubernetes.client.util.WebSockets;
1919

2020
import java.io.BufferedReader;
21+
import java.io.Closeable;
2122
import java.io.IOException;
2223
import java.io.InputStream;
2324
import java.io.Reader;
@@ -26,7 +27,7 @@ public class WebSocketsExample {
2627
public static void main(String... args) throws ApiException, IOException {
2728
final ApiClient client = Config.defaultClient();
2829
WebSockets.stream(args[0], "GET", client, new WebSockets.SocketListener() {
29-
public void open() {}
30+
public void open(String protocol, Closeable close) {}
3031
public void close() {
3132
// Trigger shutdown of the dispatcher's executor so this process can exit cleanly.
3233
client.getHttpClient().getDispatcher().getExecutorService().shutdown();

util/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
<artifactId>commons-codec</artifactId>
2525
<version>1.10</version>
2626
</dependency>
27+
<dependency>
28+
<groupId>commons-lang</groupId>
29+
<artifactId>commons-lang</artifactId>
30+
<version>2.6</version>
31+
</dependency>
2732
<dependency>
2833
<groupId>com.squareup.okhttp</groupId>
2934
<artifactId>okhttp-ws</artifactId>

0 commit comments

Comments
 (0)