Skip to content

Commit 231a099

Browse files
committed
Use WatchBuilder to create Watch objects
1 parent b833af4 commit 231a099

File tree

10 files changed

+529
-138
lines changed

10 files changed

+529
-138
lines changed

src/main/java/oracle/kubernetes/operator/DomainWatcher.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33

44
package oracle.kubernetes.operator;
55

6-
import java.util.concurrent.atomic.AtomicBoolean;
7-
8-
import com.google.gson.reflect.TypeToken;
96
import io.kubernetes.client.ApiException;
107
import io.kubernetes.client.util.Watch;
118
import oracle.kubernetes.operator.domain.model.oracle.kubernetes.weblogic.domain.v1.Domain;
129
import oracle.kubernetes.operator.helpers.ClientHelper;
1310
import oracle.kubernetes.operator.helpers.ClientHolder;
11+
import oracle.kubernetes.operator.builders.WatchBuilder;
1412
import oracle.kubernetes.operator.watcher.Watcher;
1513
import oracle.kubernetes.operator.watcher.Watching;
1614
import oracle.kubernetes.operator.watcher.WatchingEventDestination;
1715

16+
import java.util.concurrent.atomic.AtomicBoolean;
17+
1818
/**
1919
* This class handles Domain watching. It receives domain events and sends
2020
* them into the operator for processing.
@@ -73,14 +73,9 @@ protected Watching<Domain> createWatching(ClientHolder client) {
7373
*/
7474
@Override
7575
public Watch<Domain> initiateWatch(Object context, String resourceVersion) throws ApiException {
76-
return Watch.createWatch(client.getApiClient(),
77-
client.callBuilder().with($ -> {
78-
$.resourceVersion = resourceVersion;
79-
$.timeoutSeconds = 30;
80-
$.watch = true;
81-
}).listDomainCall(ns),
82-
new TypeToken<Watch.Response<Domain>>() {
83-
}.getType());
76+
return new WatchBuilder(client)
77+
.withResourceVersion(resourceVersion)
78+
.createDomainsInNamespaceWatch(ns);
8479
}
8580

8681
@Override

src/main/java/oracle/kubernetes/operator/IngressWatcher.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@
33

44
package oracle.kubernetes.operator;
55

6-
import java.util.Map;
7-
import java.util.concurrent.atomic.AtomicBoolean;
8-
9-
import com.google.gson.reflect.TypeToken;
106
import io.kubernetes.client.ApiException;
117
import io.kubernetes.client.models.V1ObjectMeta;
128
import io.kubernetes.client.models.V1beta1Ingress;
139
import io.kubernetes.client.util.Watch;
1410
import oracle.kubernetes.operator.helpers.ClientHelper;
1511
import oracle.kubernetes.operator.helpers.ClientHolder;
12+
import oracle.kubernetes.operator.builders.WatchBuilder;
1613
import oracle.kubernetes.operator.watcher.Watcher;
1714
import oracle.kubernetes.operator.watcher.Watching;
1815
import oracle.kubernetes.operator.watcher.WatchingEventDestination;
1916

17+
import java.util.Map;
18+
import java.util.concurrent.atomic.AtomicBoolean;
19+
2020
/**
2121
* This class handles Ingress watching. It receives Ingress change events and sends
2222
* them into the operator for processing.
@@ -75,15 +75,10 @@ protected Watching<V1beta1Ingress> createWatching(ClientHolder client) {
7575
*/
7676
@Override
7777
public Watch<V1beta1Ingress> initiateWatch(Object context, String resourceVersion) throws ApiException {
78-
return Watch.createWatch(client.getApiClient(),
79-
client.callBuilder().with($ -> {
80-
$.resourceVersion = resourceVersion;
81-
$.labelSelector = LabelConstants.DOMAINUID_LABEL; // Any Ingress with a domainUID label
82-
$.timeoutSeconds = 30;
83-
$.watch = true;
84-
}).listIngressCall(ns),
85-
new TypeToken<Watch.Response<V1beta1Ingress>>() {
86-
}.getType());
78+
return new WatchBuilder(client)
79+
.withResourceVersion(resourceVersion)
80+
.withLabelSelector(LabelConstants.DOMAINUID_LABEL) // Any Ingress with a domainUID label
81+
.createIngressWatch(ns);
8782
}
8883

8984
@Override

src/main/java/oracle/kubernetes/operator/PodWatcher.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
33
package oracle.kubernetes.operator;
44

5-
import java.util.List;
6-
import java.util.Map;
7-
import java.util.concurrent.ConcurrentHashMap;
8-
import java.util.concurrent.ConcurrentMap;
9-
import java.util.concurrent.atomic.AtomicBoolean;
10-
11-
import com.google.gson.reflect.TypeToken;
12-
135
import io.kubernetes.client.ApiException;
146
import io.kubernetes.client.models.V1ObjectMeta;
157
import io.kubernetes.client.models.V1Pod;
@@ -23,13 +15,20 @@
2315
import oracle.kubernetes.operator.logging.LoggingFacade;
2416
import oracle.kubernetes.operator.logging.LoggingFactory;
2517
import oracle.kubernetes.operator.logging.MessageKeys;
18+
import oracle.kubernetes.operator.builders.WatchBuilder;
2619
import oracle.kubernetes.operator.watcher.Watcher;
2720
import oracle.kubernetes.operator.watcher.Watching;
2821
import oracle.kubernetes.operator.watcher.WatchingEventDestination;
2922
import oracle.kubernetes.operator.work.NextAction;
3023
import oracle.kubernetes.operator.work.Packet;
3124
import oracle.kubernetes.operator.work.Step;
3225

26+
import java.util.List;
27+
import java.util.Map;
28+
import java.util.concurrent.ConcurrentHashMap;
29+
import java.util.concurrent.ConcurrentMap;
30+
import java.util.concurrent.atomic.AtomicBoolean;
31+
3332
/**
3433
* Watches for Pods to become Ready or leave Ready state
3534
*
@@ -49,7 +48,6 @@ public class PodWatcher implements Runnable {
4948
* Factory for PodWatcher
5049
* @param ns Namespace
5150
* @param initialResourceVersion Initial resource version or empty string
52-
* @param destination Callback for watch events
5351
* @param isStopping Stop signal
5452
* @return Pod watcher for the namespace
5553
*/
@@ -101,15 +99,10 @@ private Watching<V1Pod> createWatching(ClientHolder client) {
10199
*/
102100
@Override
103101
public Watch<V1Pod> initiateWatch(Object context, String resourceVersion) throws ApiException {
104-
return Watch.createWatch(client.getApiClient(),
105-
client.callBuilder().with($ -> {
106-
$.resourceVersion = resourceVersion;
107-
$.labelSelector = LabelConstants.DOMAINUID_LABEL; // Any Pod with a domainUID label
108-
$.timeoutSeconds = 30;
109-
$.watch = true;
110-
}).listPodCall(ns),
111-
new TypeToken<Watch.Response<V1Pod>>() {
112-
}.getType());
102+
return new WatchBuilder(client)
103+
.withResourceVersion(resourceVersion)
104+
.withLabelSelector(LabelConstants.DOMAINUID_LABEL) // Any Pod with a domainUID label
105+
.createPodWatch(ns);
113106
}
114107

115108
@Override

src/main/java/oracle/kubernetes/operator/ServiceWatcher.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,20 @@
33

44
package oracle.kubernetes.operator;
55

6-
import java.util.Map;
7-
import java.util.concurrent.atomic.AtomicBoolean;
8-
9-
import com.google.gson.reflect.TypeToken;
106
import io.kubernetes.client.ApiException;
117
import io.kubernetes.client.models.V1ObjectMeta;
12-
import io.kubernetes.client.models.V1Pod;
138
import io.kubernetes.client.models.V1Service;
149
import io.kubernetes.client.util.Watch;
1510
import oracle.kubernetes.operator.helpers.ClientHelper;
1611
import oracle.kubernetes.operator.helpers.ClientHolder;
12+
import oracle.kubernetes.operator.builders.WatchBuilder;
1713
import oracle.kubernetes.operator.watcher.Watcher;
1814
import oracle.kubernetes.operator.watcher.Watching;
1915
import oracle.kubernetes.operator.watcher.WatchingEventDestination;
2016

17+
import java.util.Map;
18+
import java.util.concurrent.atomic.AtomicBoolean;
19+
2120
/**
2221
* This class handles Service watching. It service change events and sends
2322
* them into the operator for processing.
@@ -76,15 +75,10 @@ protected Watching<V1Service> createWatching(ClientHolder client) {
7675
*/
7776
@Override
7877
public Watch<V1Service> initiateWatch(Object context, String resourceVersion) throws ApiException {
79-
return Watch.createWatch(client.getApiClient(),
80-
client.callBuilder().with($ -> {
81-
$.resourceVersion = resourceVersion;
82-
$.labelSelector = LabelConstants.DOMAINUID_LABEL; // Any Service with a domainUID label
83-
$.timeoutSeconds = 30;
84-
$.watch = true;
85-
}).listServiceCall(ns),
86-
new TypeToken<Watch.Response<V1Service>>() {
87-
}.getType());
78+
return new WatchBuilder(client)
79+
.withResourceVersion(resourceVersion)
80+
.withLabelSelector(LabelConstants.DOMAINUID_LABEL) // Any Service with a domainUID label
81+
.createServiceWatch(ns);
8882
}
8983

9084
@Override
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package oracle.kubernetes.operator.builders;
2+
3+
import io.kubernetes.client.ProgressRequestBody;
4+
import io.kubernetes.client.ProgressResponseBody;
5+
6+
public class CallParams {
7+
private static final int DEFAULT_LIMIT = 500;
8+
private static final int DEFAULT_TIMEOUT = 30;
9+
10+
private Boolean includeUninitialized;
11+
private Integer limit = CallParams.DEFAULT_LIMIT;
12+
private Integer timeoutSeconds = CallParams.DEFAULT_TIMEOUT;
13+
private String fieldSelector;
14+
private String labelSelector;
15+
private String pretty;
16+
private String resourceVersion;
17+
private ProgressResponseBody.ProgressListener progressListener;
18+
private ProgressRequestBody.ProgressRequestListener progressRequestListener;
19+
20+
public Boolean getIncludeUninitialized() {
21+
return includeUninitialized;
22+
}
23+
24+
public Integer getLimit() {
25+
return limit;
26+
}
27+
28+
public Integer getTimeoutSeconds() {
29+
return timeoutSeconds;
30+
}
31+
32+
public String getFieldSelector() {
33+
return fieldSelector;
34+
}
35+
36+
public String getLabelSelector() {
37+
return labelSelector;
38+
}
39+
40+
public String getPretty() {
41+
return pretty;
42+
}
43+
44+
public String getResourceVersion() {
45+
return resourceVersion;
46+
}
47+
48+
public ProgressResponseBody.ProgressListener getProgressListener() {
49+
return progressListener;
50+
}
51+
52+
public ProgressRequestBody.ProgressRequestListener getProgressRequestListener() {
53+
return progressRequestListener;
54+
}
55+
56+
void setIncludeUninitialized(Boolean includeUninitialized) {
57+
this.includeUninitialized = includeUninitialized;
58+
}
59+
60+
void setLimit(Integer limit) {
61+
this.limit = limit;
62+
}
63+
64+
void setTimeoutSeconds(Integer timeoutSeconds) {
65+
this.timeoutSeconds = timeoutSeconds;
66+
}
67+
68+
void setFieldSelector(String fieldSelector) {
69+
this.fieldSelector = fieldSelector;
70+
}
71+
72+
void setLabelSelector(String labelSelector) {
73+
this.labelSelector = labelSelector;
74+
}
75+
76+
void setPretty(String pretty) {
77+
this.pretty = pretty;
78+
}
79+
80+
void setResourceVersion(String resourceVersion) {
81+
this.resourceVersion = resourceVersion;
82+
}
83+
84+
void setProgressListener(ProgressResponseBody.ProgressListener progressListener) {
85+
this.progressListener = progressListener;
86+
}
87+
88+
void setProgressRequestListener(ProgressRequestBody.ProgressRequestListener progressRequestListener) {
89+
this.progressRequestListener = progressRequestListener;
90+
}
91+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
2+
// Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
3+
package oracle.kubernetes.operator.builders;
4+
5+
import io.kubernetes.client.ApiException;
6+
7+
/**
8+
* An exception used to bypass functional programming incompatability with checked exceptions. This is thrown
9+
* by a function object and the underlying ApiException is then rethrown by the caller of the function object.
10+
*/
11+
class UncheckedApiException extends RuntimeException {
12+
UncheckedApiException(ApiException e) {
13+
super(e);
14+
}
15+
16+
@Override
17+
public synchronized ApiException getCause() {
18+
return (ApiException) super.getCause();
19+
}
20+
}

0 commit comments

Comments
 (0)