Skip to content

Commit b357471

Browse files
author
Dave Syer
committed
Create LoadBalancer by hand instead of via annotation
Fixes gh-1505
1 parent 70259f3 commit b357471

File tree

3 files changed

+38
-17
lines changed

3 files changed

+38
-17
lines changed

examples/examples-release-12/src/main/java/io/kubernetes/client/examples/SpringLoadBalancerExample.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,16 @@ public MyService myService() {
5151

5252
public static class MyService {
5353

54-
@KubernetesEndpointsLoadBalanced(namespace = "default", name = "kubernetes")
5554
private LoadBalancer defaultKubernetesLoadBalancer;
55+
56+
public MyService(Lister<V1Endpoints> lister) {
57+
InformerEndpointsGetter getter = new InformerEndpointsGetter(lister);
58+
RoundRobinLoadBalanceStrategy strategy = new RoundRobinLoadBalanceStrategy();
59+
defaultKubernetesLoadBalancer = new EndpointsLoadBalancer(
60+
() -> getter.get("default", "kubernetes"),
61+
strategy
62+
);
63+
}
64+
5665
}
5766
}

spring/src/main/java/io/kubernetes/client/spring/extended/network/endpoints/InformerEndpointsGetter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@
1414

1515
import io.kubernetes.client.informer.cache.Lister;
1616
import io.kubernetes.client.openapi.models.V1Endpoints;
17-
import org.springframework.beans.factory.annotation.Autowired;
1817

1918
public class InformerEndpointsGetter implements EndpointsGetter {
2019

21-
@Autowired private Lister<V1Endpoints> endpointsLister;
20+
private final Lister<V1Endpoints> endpointsLister;
21+
22+
public InformerEndpointsGetter(Lister<V1Endpoints> lister) {
23+
this.endpointsLister = lister;
24+
}
2225

2326
@Override
2427
public V1Endpoints get(String namespace, String name) {

spring/src/test/java/io/kubernetes/client/spring/extended/network/KubernetesEndpointsLoadBalancerCreatorTest.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@
1212
*/
1313
package io.kubernetes.client.spring.extended.network;
1414

15-
import static org.junit.Assert.*;
15+
import static org.junit.Assert.assertEquals;
16+
import static org.junit.Assert.assertNotNull;
17+
import static org.junit.Assert.assertThrows;
1618

19+
import io.kubernetes.client.extended.network.EndpointsLoadBalancer;
1720
import io.kubernetes.client.extended.network.LoadBalanceStrategy;
1821
import io.kubernetes.client.extended.network.LoadBalancer;
22+
import io.kubernetes.client.extended.network.RoundRobinLoadBalanceStrategy;
1923
import io.kubernetes.client.extended.network.exception.NoAvailableAddressException;
2024
import io.kubernetes.client.informer.cache.Cache;
2125
import io.kubernetes.client.informer.cache.Lister;
@@ -24,8 +28,8 @@
2428
import io.kubernetes.client.openapi.models.V1EndpointSubset;
2529
import io.kubernetes.client.openapi.models.V1Endpoints;
2630
import io.kubernetes.client.openapi.models.V1ObjectMeta;
27-
import io.kubernetes.client.spring.extended.network.annotation.KubernetesEndpointsLoadBalanced;
2831
import io.kubernetes.client.spring.extended.network.endpoints.EndpointsGetter;
32+
import io.kubernetes.client.spring.extended.network.endpoints.InformerEndpointsGetter;
2933
import java.util.List;
3034
import org.junit.Test;
3135
import org.junit.runner.RunWith;
@@ -53,28 +57,32 @@ public Lister<V1Endpoints> endpointsLister(Cache<V1Endpoints> endpointsCache) {
5357
}
5458

5559
@Bean
56-
public MyBean myBean() {
57-
return new MyBean();
60+
public MyBean myBean(Lister<V1Endpoints> lister) {
61+
return new MyBean(new MyEndpointGetter(), new MyStrategy(), lister);
5862
}
5963
}
6064

6165
static class MyBean {
62-
@KubernetesEndpointsLoadBalanced(namespace = "default", name = "no-such")
66+
67+
public MyBean(
68+
MyEndpointGetter myEndpointGetter, MyStrategy myStrategy, Lister<V1Endpoints> lister) {
69+
InformerEndpointsGetter getter = new InformerEndpointsGetter(lister);
70+
RoundRobinLoadBalanceStrategy strategy = new RoundRobinLoadBalanceStrategy();
71+
noSuchLoadBalancer =
72+
new EndpointsLoadBalancer(() -> getter.get("default", "no-such"), strategy);
73+
fooLoadBalancer = new EndpointsLoadBalancer(() -> getter.get("default", "foo"), strategy);
74+
customStrategyLoadBalancer =
75+
new EndpointsLoadBalancer(() -> getter.get("default", "foo"), myStrategy);
76+
customEndpointGetterLoadBalancer =
77+
new EndpointsLoadBalancer(() -> myEndpointGetter.get("default", "foo"), strategy);
78+
}
79+
6380
private LoadBalancer noSuchLoadBalancer;
6481

65-
@KubernetesEndpointsLoadBalanced(namespace = "default", name = "foo")
6682
private LoadBalancer fooLoadBalancer;
6783

68-
@KubernetesEndpointsLoadBalanced(
69-
namespace = "default",
70-
name = "foo",
71-
strategy = MyStrategy.class)
7284
private LoadBalancer customStrategyLoadBalancer;
7385

74-
@KubernetesEndpointsLoadBalanced(
75-
namespace = "default",
76-
name = "foo",
77-
endpointsGetter = MyEndpointGetter.class)
7886
private LoadBalancer customEndpointGetterLoadBalancer;
7987
}
8088

@@ -109,6 +117,7 @@ public V1Endpoints get(String namespace, String name) {
109117
new V1EndpointSubset()
110118
.addAddressesItem(new V1EndpointAddress().ip("127.0.0.1"))
111119
.addPortsItem(new V1EndpointPort().port(8080)));
120+
112121
@Autowired private MyBean myBean;
113122

114123
@Autowired private Cache<V1Endpoints> endpointsCache;

0 commit comments

Comments
 (0)