Skip to content

Commit 9cc339d

Browse files
committed
initial implementation for java infomer portal
1 parent 47eb4a2 commit 9cc339d

38 files changed

+2617
-2
lines changed

util/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@
139139
<groupId>org.apache.maven.plugins</groupId>
140140
<artifactId>maven-compiler-plugin</artifactId>
141141
<configuration>
142-
<source>1.7</source>
143-
<target>1.7</target>
142+
<source>8</source>
143+
<target>8</target>
144144
</configuration>
145145
</plugin>
146146
<plugin>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.kubernetes.client.informer;
2+
3+
public interface BasicInformer<T> {
4+
SharedIndexInformer<T> informer();
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.kubernetes.client.informer;
2+
3+
public interface ClusterScopeInformer<T> extends BasicInformer<T> {
4+
ClusterScopeLister<T> lister();
5+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.kubernetes.client.informer;
2+
3+
import java.util.List;
4+
5+
public interface ClusterScopeLister<T> {
6+
7+
List<T> list();
8+
9+
T get(String name);
10+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.kubernetes.client.informer;
2+
3+
public enum EventType {
4+
ADDED,
5+
6+
MODIFIED,
7+
8+
DELETED,
9+
10+
ERROR;
11+
12+
/**
13+
* getByType returns the corresponding EventType by type.
14+
*
15+
* @param type specific code
16+
* @return corresponding EventType
17+
*/
18+
public static EventType getByType(String type) {
19+
if (type != null && type.length() > 0) {
20+
for (EventType eventType : EventType.values()) {
21+
if (eventType.name().equalsIgnoreCase(type)) {
22+
return eventType;
23+
}
24+
}
25+
}
26+
return null;
27+
}
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.kubernetes.client.informer;
2+
3+
import java.util.List;
4+
5+
public interface Lister<T> {
6+
7+
List<T> list();
8+
9+
T get(String name);
10+
11+
List<T> list(String namespace);
12+
13+
T get(String namespace, String name);
14+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.kubernetes.client.informer;
2+
3+
import io.kubernetes.client.ApiException;
4+
import io.kubernetes.client.util.Watch;
5+
import java.util.Map;
6+
7+
public interface ListerWatcher<T> {
8+
9+
ResourceList<T> list(Map<String, Object> params) throws ApiException;
10+
11+
Watch<T> watch(Map<String, Object> params) throws ApiException;
12+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.kubernetes.client.informer;
2+
3+
public interface NamespacedInformer<T> extends BasicInformer<T> {
4+
NamespacedLister<T> lister();
5+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.kubernetes.client.informer;
2+
3+
import java.util.List;
4+
5+
public interface NamespacedLister<T> {
6+
7+
List<T> list(String namespace);
8+
9+
T get(String namespace, String name);
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.kubernetes.client.informer;
2+
3+
public interface ResourceEventHandler<T> {
4+
5+
void onAdd(T obj);
6+
7+
void onUpdate(T oldObj, T newObj);
8+
9+
void onDelete(T obj);
10+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.kubernetes.client.informer;
2+
3+
import io.kubernetes.client.ApiResponse;
4+
import io.kubernetes.client.models.V1ListMeta;
5+
import java.lang.reflect.Method;
6+
import java.util.List;
7+
8+
public class ResourceList<T> {
9+
10+
private Object listObject;
11+
12+
public <T> ResourceList(ApiResponse<T> apiResponse) {
13+
listObject = apiResponse.getData();
14+
}
15+
16+
public List<T> getItems() {
17+
try {
18+
Method getItemsMethod = listObject.getClass().getMethod("getItems");
19+
return (List<T>) getItemsMethod.invoke(listObject);
20+
} catch (Exception e) {
21+
e.printStackTrace();
22+
throw new RuntimeException(e);
23+
}
24+
}
25+
26+
public V1ListMeta getListMeta() {
27+
try {
28+
Method getItemsMethod = listObject.getClass().getMethod("getMetadata");
29+
return (V1ListMeta) getItemsMethod.invoke(listObject);
30+
} catch (Exception e) {
31+
e.printStackTrace();
32+
throw new RuntimeException(e);
33+
}
34+
}
35+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.kubernetes.client.informer;
2+
3+
import io.kubernetes.client.informer.cache.Store;
4+
import io.kubernetes.client.informer.cache.function.ResyncFunc;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
public class ResyncRunnable<T> implements Runnable {
9+
10+
private static final Logger log = LoggerFactory.getLogger(ResyncRunnable.class);
11+
12+
private Store store;
13+
private ResyncFunc resyncFunc;
14+
15+
public ResyncRunnable(Store<T> store, ResyncFunc resyncFunc) {
16+
this.store = store;
17+
this.resyncFunc = resyncFunc;
18+
}
19+
20+
public void run() {
21+
if (log.isDebugEnabled()) {
22+
log.debug("ResyncRunnable#resync ticker tick");
23+
}
24+
25+
if (resyncFunc == null || resyncFunc.shouldResync()) {
26+
if (log.isDebugEnabled()) {
27+
log.debug("ResyncRunnable#force resync");
28+
}
29+
this.store.resync();
30+
}
31+
}
32+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.kubernetes.client.informer;
2+
3+
import io.kubernetes.client.informer.cache.Indexer;
4+
import io.kubernetes.client.informer.cache.function.IndexFunc;
5+
import java.util.Map;
6+
7+
public interface SharedIndexInformer<T> extends SharedInformer<T> {
8+
9+
/**
10+
* Add indexers.
11+
*
12+
* @param indexers the indexers
13+
*/
14+
void addIndexers(Map<String, IndexFunc> indexers);
15+
16+
/**
17+
* getIndexer returns the internal indexer store.
18+
*
19+
* @return the internal indexer store
20+
*/
21+
Indexer<T> getIndexer();
22+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.kubernetes.client.informer;
2+
3+
public interface SharedInformer<T> {
4+
5+
/**
6+
* Add event handler.
7+
*
8+
* @param handler the handler
9+
*/
10+
void addEventHandler(ResourceEventHandler<T> handler);
11+
12+
/**
13+
* addEventHandlerWithResyncPeriod adds an event handler to the shared informer using the
14+
* specified resync period. Events to a single handler are delivered sequentially, but there is no
15+
* coordination between different handlers.
16+
*
17+
* @param handler the event handler
18+
* @param resyncPeriod the specific resync period
19+
*/
20+
void addEventHandlerWithResyncPeriod(ResourceEventHandler<T> handler, long resyncPeriod);
21+
22+
/** run starts the shared informer, which will be stopped until stop() is called. */
23+
void run();
24+
25+
/** stop stops the shared informer. */
26+
void stop();
27+
28+
/** hasSynced returns true if the shared informer's store has synced. */
29+
boolean hasSynced();
30+
31+
/**
32+
* Last sync resource version string.
33+
*
34+
* @return the string
35+
*/
36+
// LastSyncResourceVersion is the resource version observed when last synced with the underlying
37+
// store. The value returned is not synchronized with access to the underlying store and is not
38+
// thread-safe.
39+
String lastSyncResourceVersion();
40+
}

0 commit comments

Comments
 (0)