Skip to content

Commit 8e58dc1

Browse files
authored
Use Kubernetes Java client 9.0.2 (#1898)
* Uptake k8s Java client 9.0.1 * Review corrections * Use new version of GenericKubernetesApi
1 parent 3829dfe commit 8e58dc1

File tree

11 files changed

+29
-45
lines changed

11 files changed

+29
-45
lines changed

new-integration-tests/src/test/java/oracle/weblogic/domain/Domain.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package oracle.weblogic.domain;
55

6+
import io.kubernetes.client.common.KubernetesObject;
67
import io.kubernetes.client.openapi.models.V1ObjectMeta;
78
import io.swagger.annotations.ApiModel;
89
import io.swagger.annotations.ApiModelProperty;
@@ -13,7 +14,7 @@
1314
@ApiModel(
1415
description =
1516
"Domain represents a WebLogic domain and how it will be realized in the Kubernetes cluster.")
16-
public class Domain {
17+
public class Domain implements KubernetesObject {
1718

1819
@ApiModelProperty("The API version for the Domain.")
1920
private String apiVersion;

new-integration-tests/src/test/java/oracle/weblogic/domain/DomainList.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.ArrayList;
77
import java.util.List;
88

9+
import io.kubernetes.client.common.KubernetesListObject;
910
import io.kubernetes.client.openapi.models.V1ListMeta;
1011
import io.swagger.annotations.ApiModel;
1112
import io.swagger.annotations.ApiModelProperty;
@@ -14,7 +15,7 @@
1415
import org.apache.commons.lang3.builder.ToStringBuilder;
1516

1617
@ApiModel(description = "DomainList is a list of Domains.")
17-
public class DomainList {
18+
public class DomainList implements KubernetesListObject {
1819

1920
@ApiModelProperty("The API version for the Domain.")
2021
private String apiVersion;

new-integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Kubernetes.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@
2323
import com.google.gson.JsonElement;
2424
import io.kubernetes.client.Copy;
2525
import io.kubernetes.client.custom.V1Patch;
26-
import io.kubernetes.client.extended.generic.GenericKubernetesApi;
27-
import io.kubernetes.client.extended.generic.KubernetesApiResponse;
28-
import io.kubernetes.client.extended.generic.options.DeleteOptions;
2926
import io.kubernetes.client.openapi.ApiClient;
3027
import io.kubernetes.client.openapi.ApiException;
3128
import io.kubernetes.client.openapi.Configuration;
@@ -77,6 +74,10 @@
7774
import io.kubernetes.client.openapi.models.V1ServicePort;
7875
import io.kubernetes.client.util.ClientBuilder;
7976
import io.kubernetes.client.util.PatchUtils;
77+
import io.kubernetes.client.util.exception.CopyNotSupportedException;
78+
import io.kubernetes.client.util.generic.GenericKubernetesApi;
79+
import io.kubernetes.client.util.generic.KubernetesApiResponse;
80+
import io.kubernetes.client.util.generic.options.DeleteOptions;
8081
import oracle.weblogic.domain.Domain;
8182
import oracle.weblogic.domain.DomainList;
8283
import oracle.weblogic.kubernetes.logging.LoggingFacade;
@@ -412,6 +413,7 @@ public static String getPodLog(String name, String namespace, String container)
412413
namespace, // name of the Namespace
413414
container, // container for which to stream logs
414415
null, // Boolean Follow the log stream of the pod
416+
null, // skip TLS verification of backend
415417
null, // number of bytes to read from the server before terminating the log output
416418
PRETTY, // pretty print output
417419
null, // Boolean, Return previous terminated container logs
@@ -652,7 +654,7 @@ public static V1PodList listPods(String namespace, String labelSelectors) throws
652654
* @throws ApiException when pod interaction fails
653655
*/
654656
public static void copyDirectoryFromPod(V1Pod pod, String srcPath, Path destination)
655-
throws IOException, ApiException {
657+
throws IOException, ApiException, CopyNotSupportedException {
656658
Copy copy = new Copy();
657659
copy.copyDirectoryFromPod(pod, srcPath, destination);
658660
}

new-integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/BuildApplication.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.kubernetes.client.openapi.models.V1PodSpec;
2020
import io.kubernetes.client.openapi.models.V1Secret;
2121
import io.kubernetes.client.openapi.models.V1SecretList;
22+
import io.kubernetes.client.util.exception.CopyNotSupportedException;
2223
import oracle.weblogic.kubernetes.TestConstants;
2324
import oracle.weblogic.kubernetes.actions.impl.Exec;
2425
import oracle.weblogic.kubernetes.actions.impl.primitive.Kubernetes;
@@ -179,7 +180,7 @@ public static Path buildApplication(Path appSrcPath, Map<String, String> antPara
179180

180181
Kubernetes.copyDirectoryFromPod(webLogicPod,
181182
Paths.get(APPLICATIONS_PATH, archiveDistDir).toString(), destArchiveBaseDir);
182-
} catch (ApiException | IOException | InterruptedException ioex) {
183+
} catch (ApiException | IOException | InterruptedException | CopyNotSupportedException ioex) {
183184
logger.info("Exception while copying file " + Paths.get(APPLICATIONS_PATH, archiveDistDir) + " from pod", ioex);
184185
}
185186

new-integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/LoggingUtil.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.kubernetes.client.openapi.models.V1PodSpec;
2929
import io.kubernetes.client.openapi.models.V1Volume;
3030
import io.kubernetes.client.openapi.models.V1VolumeMount;
31+
import io.kubernetes.client.util.exception.CopyNotSupportedException;
3132
import oracle.weblogic.kubernetes.TestConstants;
3233
import oracle.weblogic.kubernetes.actions.impl.primitive.Kubernetes;
3334
import oracle.weblogic.kubernetes.logging.LoggingFacade;
@@ -435,7 +436,7 @@ private static void copyDirectoryFromPod(V1Pod pvPod, Path destinationPath)
435436
try {
436437
logger.info("Copying the contents of PV to {0}", destinationPath.toString());
437438
Kubernetes.copyDirectoryFromPod(pvPod, "/shared", destinationPath);
438-
} catch (IOException | ApiException ex) {
439+
} catch (IOException | ApiException | CopyNotSupportedException ex) {
439440
logger.warning(ex.getMessage());
440441
}
441442
};

operator/src/main/java/oracle/kubernetes/operator/calls/AsyncRequestStep.java

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33

44
package oracle.kubernetes.operator.calls;
55

6-
import java.lang.reflect.InvocationTargetException;
7-
import java.lang.reflect.Method;
86
import java.util.List;
97
import java.util.Map;
108
import java.util.Optional;
119
import java.util.Random;
1210
import java.util.concurrent.TimeUnit;
1311
import java.util.concurrent.atomic.AtomicBoolean;
1412

13+
import io.kubernetes.client.common.KubernetesListObject;
1514
import io.kubernetes.client.openapi.ApiCallback;
1615
import io.kubernetes.client.openapi.ApiClient;
1716
import io.kubernetes.client.openapi.ApiException;
@@ -95,23 +94,11 @@ public AsyncRequestStep(
9594
}
9695

9796
private static String accessContinue(Object result) {
98-
String cont = "";
99-
if (result != null) {
100-
try {
101-
Method m = result.getClass().getMethod("getMetadata");
102-
Object meta = m.invoke(result);
103-
if (meta instanceof V1ListMeta) {
104-
return ((V1ListMeta) meta).getContinue();
105-
}
106-
} catch (NoSuchMethodException
107-
| SecurityException
108-
| IllegalAccessException
109-
| IllegalArgumentException
110-
| InvocationTargetException e) {
111-
// no-op, no-log
112-
}
113-
}
114-
return cont;
97+
return Optional.ofNullable(result)
98+
.filter(KubernetesListObject.class::isInstance)
99+
.map(KubernetesListObject.class::cast)
100+
.map(KubernetesListObject::getMetadata)
101+
.map(V1ListMeta::getContinue).orElse(null);
115102
}
116103

117104
@Override

operator/src/main/java/oracle/kubernetes/operator/helpers/CallBuilder.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ public <T> T execute(
222222
null,
223223
null,
224224
null,
225+
null,
225226
pretty,
226227
null,
227228
null,
@@ -1215,7 +1216,6 @@ private Call deleteCollectionPodAsync(
12151216
.deleteCollectionNamespacedPodAsync(
12161217
namespace,
12171218
pretty,
1218-
allowWatchBookmarks,
12191219
cont,
12201220
dryRun,
12211221
fieldSelector,
@@ -1226,7 +1226,6 @@ private Call deleteCollectionPodAsync(
12261226
propagationPolicy,
12271227
resourceVersion,
12281228
timeoutSeconds,
1229-
watch,
12301229
deleteOptions,
12311230
callback);
12321231
}
@@ -1806,6 +1805,7 @@ private Call readPodLogAsync(
18061805
String namespace,
18071806
String container,
18081807
Boolean follow,
1808+
Boolean insecureSkipTLSVerifyBackend,
18091809
Integer limitBytes,
18101810
String pretty,
18111811
Boolean previous,
@@ -1820,6 +1820,7 @@ private Call readPodLogAsync(
18201820
namespace,
18211821
container,
18221822
follow,
1823+
insecureSkipTLSVerifyBackend,
18231824
limitBytes,
18241825
pretty,
18251826
previous,

operator/src/main/java/oracle/kubernetes/operator/helpers/ClientPool.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import java.util.concurrent.atomic.AtomicBoolean;
1313
import java.util.concurrent.atomic.AtomicReference;
1414

15-
import io.kubernetes.client.custom.V1Patch;
1615
import io.kubernetes.client.openapi.ApiClient;
1716
import io.kubernetes.client.openapi.Configuration;
1817
import io.kubernetes.client.util.ClientBuilder;
@@ -103,7 +102,7 @@ private static class DefaultClientFactory implements ClientFactory {
103102
public ApiClient get() {
104103
ApiClient client;
105104
try {
106-
client = ClientBuilder.standard().setOverridePatchFormat(V1Patch.PATCH_FORMAT_JSON_PATCH).build();
105+
client = ClientBuilder.standard().build();
107106
if (first.getAndSet(false)) {
108107
Configuration.setDefaultApiClient(client);
109108
}

operator/src/main/java/oracle/kubernetes/weblogic/domain/model/Domain.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.common.base.Strings;
2020
import com.google.gson.annotations.Expose;
2121
import com.google.gson.annotations.SerializedName;
22+
import io.kubernetes.client.common.KubernetesObject;
2223
import io.kubernetes.client.openapi.models.V1EnvVar;
2324
import io.kubernetes.client.openapi.models.V1LocalObjectReference;
2425
import io.kubernetes.client.openapi.models.V1ObjectMeta;
@@ -37,7 +38,7 @@
3738
/**
3839
* Domain represents a WebLogic domain and how it will be realized in the Kubernetes cluster.
3940
*/
40-
public class Domain {
41+
public class Domain implements KubernetesObject {
4142
/**
4243
* The pattern for computing the default shared logs directory.
4344
*/

operator/src/main/java/oracle/kubernetes/weblogic/domain/model/DomainList.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@
1010

1111
import com.google.gson.annotations.Expose;
1212
import com.google.gson.annotations.SerializedName;
13+
import io.kubernetes.client.common.KubernetesListObject;
1314
import io.kubernetes.client.openapi.models.V1ListMeta;
1415
import org.apache.commons.lang3.builder.EqualsBuilder;
1516
import org.apache.commons.lang3.builder.HashCodeBuilder;
1617
import org.apache.commons.lang3.builder.ToStringBuilder;
1718

1819
/** DomainList is a list of Domains. */
19-
public class DomainList {
20+
public class DomainList implements KubernetesListObject {
2021

2122
/**
2223
* APIVersion defines the versioned schema of this representation of an object. Servers should

0 commit comments

Comments
 (0)