2424
2525import com .github .tomakehurst .wiremock .junit .WireMockRule ;
2626import com .google .gson .Gson ;
27- import io .kubernetes .client .informer .SharedInformer ;
27+ import io .kubernetes .client .informer .SharedIndexInformer ;
2828import io .kubernetes .client .informer .SharedInformerFactory ;
2929import io .kubernetes .client .informer .cache .Lister ;
3030import io .kubernetes .client .openapi .ApiClient ;
3434import io .kubernetes .client .openapi .models .V1ObjectMeta ;
3535import io .kubernetes .client .openapi .models .V1Pod ;
3636import io .kubernetes .client .openapi .models .V1PodList ;
37- import io .kubernetes .client .spring .extended .controller .annotation .GroupVersionResource ;
38- import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformer ;
39- import io .kubernetes .client .spring .extended .controller .annotation .KubernetesInformers ;
4037import io .kubernetes .client .util .ClientBuilder ;
38+ import io .kubernetes .client .util .generic .GenericKubernetesApi ;
4139import java .util .Arrays ;
4240import org .junit .Rule ;
4341import org .junit .Test ;
4442import org .junit .runner .RunWith ;
4543import org .springframework .beans .factory .annotation .Autowired ;
46- import org .springframework .boot .autoconfigure .EnableAutoConfiguration ;
4744import org .springframework .boot .autoconfigure .SpringBootApplication ;
4845import org .springframework .boot .test .context .SpringBootTest ;
4946import org .springframework .context .annotation .Bean ;
5047import org .springframework .test .context .junit4 .SpringRunner ;
5148
5249@ RunWith (SpringRunner .class )
53- @ SpringBootTest ( classes = { KubernetesInformerCreatorTest . App . class })
50+ @ SpringBootTest
5451public class KubernetesInformerCreatorTest {
5552
5653 @ Rule public WireMockRule wireMockRule = new WireMockRule (8188 );
5754
5855 @ SpringBootApplication
59- @ EnableAutoConfiguration
6056 static class App {
6157
6258 @ Bean
@@ -66,43 +62,34 @@ public ApiClient testingApiClient() {
6662 }
6763
6864 @ Bean
69- @ KubernetesInformers ({
70- @ KubernetesInformer (
71- apiTypeClass = V1Pod .class ,
72- apiListTypeClass = V1PodList .class ,
73- groupVersionResource =
74- @ GroupVersionResource (apiGroup = "" , apiVersion = "v1" , resourcePlural = "pods" )),
75- @ KubernetesInformer (
76- apiTypeClass = V1ConfigMap .class ,
77- apiListTypeClass = V1ConfigMapList .class ,
78- namespace = "default" ,
79- groupVersionResource =
80- @ GroupVersionResource (
81- apiGroup = "" ,
82- apiVersion = "v1" ,
83- resourcePlural = "configmaps" )),
84- })
85- public SharedInformerFactory testSharedInformerFactory () {
86- return new SharedInformerFactory ();
65+ public SharedIndexInformer <V1Pod > podInformer (
66+ ApiClient apiClient , SharedInformerFactory sharedInformerFactory ) {
67+ GenericKubernetesApi <V1Pod , V1PodList > genericApi =
68+ new GenericKubernetesApi <>(V1Pod .class , V1PodList .class , "" , "v1" , "pods" , apiClient );
69+ return sharedInformerFactory .sharedIndexInformerFor (genericApi , V1Pod .class , 0 );
70+ }
71+
72+ @ Bean
73+ public SharedIndexInformer <V1ConfigMap > configMapInformer (
74+ ApiClient apiClient , SharedInformerFactory sharedInformerFactory ) {
75+ GenericKubernetesApi <V1ConfigMap , V1ConfigMapList > genericApi =
76+ new GenericKubernetesApi <>(
77+ V1ConfigMap .class , V1ConfigMapList .class , "" , "v1" , "configmaps" , apiClient );
78+ return sharedInformerFactory .sharedIndexInformerFor (
79+ genericApi , V1ConfigMap .class , 0 , "default" );
8780 }
8881 }
8982
9083 @ Autowired private SharedInformerFactory informerFactory ;
9184
92- @ Autowired private SharedInformer <V1Pod > podInformer ;
93-
94- @ Autowired private SharedInformer <V1ConfigMap > configMapInformer ;
95-
96- @ Autowired private Lister <V1Pod > podLister ;
85+ @ Autowired private SharedIndexInformer <V1Pod > podInformer ;
9786
98- @ Autowired private Lister <V1ConfigMap > configMapLister ;
87+ @ Autowired private SharedIndexInformer <V1ConfigMap > configMapInformer ;
9988
10089 @ Test
10190 public void testInformerInjection () throws InterruptedException {
10291 assertNotNull (podInformer );
10392 assertNotNull (configMapInformer );
104- assertNotNull (podLister );
105- assertNotNull (configMapLister );
10693
10794 V1Pod foo1 =
10895 new V1Pod ().kind ("Pod" ).metadata (new V1ObjectMeta ().namespace ("default" ).name ("foo1" ));
@@ -162,7 +149,7 @@ public void testInformerInjection() throws InterruptedException {
162149 getRequestedFor (urlPathEqualTo ("/api/v1/namespaces/default/configmaps" ))
163150 .withQueryParam ("watch" , equalTo ("true" )));
164151
165- assertEquals (1 , podLister .list ().size ());
166- assertEquals (1 , configMapLister .list ().size ());
152+ assertEquals (1 , new Lister <>( podInformer . getIndexer ()) .list ().size ());
153+ assertEquals (1 , new Lister <>( configMapInformer . getIndexer ()) .list ().size ());
167154 }
168155}
0 commit comments