@@ -20,7 +20,7 @@ func Translate(event *core.Event) (core.ServerUpdateEvents, error) {
20
20
21
21
portsOfInterest := filterPorts (event .Service .Spec .Ports )
22
22
23
- return buildServerUpdateEvents (portsOfInterest , event . NodeIps )
23
+ return buildServerUpdateEvents (portsOfInterest , event )
24
24
}
25
25
26
26
func filterPorts (ports []v1.ServicePort ) []v1.ServicePort {
@@ -35,19 +35,34 @@ func filterPorts(ports []v1.ServicePort) []v1.ServicePort {
35
35
return portsOfInterest
36
36
}
37
37
38
- // TODO: Get the list of Node IPs from the Kubernetes API and fan out over the port
39
- func buildServerUpdateEvents (ports []v1.ServicePort , nodeIps []string ) (core.ServerUpdateEvents , error ) {
38
+ // buildServerUpdateEvents builds a list of ServerUpdateEvents based on the event type
39
+ // The NGINX+ Client uses a list of servers for Created and Updated events; the client performs reconciliation between
40
+ // the list of servers in the NGINX+ Client call and the list of servers in NGINX+.
41
+ // The NGINX+ Client uses a single server for Deleted events; so the list of servers is broken up into individual events.
42
+ func buildServerUpdateEvents (ports []v1.ServicePort , event * core.Event ) (core.ServerUpdateEvents , error ) {
40
43
logrus .Debugf ("Translate::buildServerUpdateEvents(ports=%#v)" , ports )
41
44
42
- upstreams := core.ServerUpdateEvents {}
45
+ updateEvents := core.ServerUpdateEvents {}
43
46
for _ , port := range ports {
44
47
ingressName := fixIngressName (port .Name )
45
- servers , _ := buildServers (nodeIps , port )
48
+ servers , _ := buildServers (event .NodeIps , port )
49
+
50
+ switch event .Type {
51
+ case core .Created :
52
+ fallthrough
53
+ case core .Updated :
54
+ updateEvents = append (updateEvents , core .NewServerUpdateEvent (event .Type , ingressName , servers ))
55
+ case core .Deleted :
56
+ for _ , server := range servers {
57
+ updateEvents = append (updateEvents , core .NewServerUpdateEvent (event .Type , ingressName , []nginxClient.StreamUpstreamServer {server }))
58
+ }
59
+ default :
60
+ logrus .Warnf (`Translator::buildServerUpdateEvents: unknown event type: %d` , event .Type )
61
+ }
46
62
47
- upstreams = append (upstreams , core .NewServerUpdateEvent (ingressName , servers ))
48
63
}
49
64
50
- return upstreams , nil
65
+ return updateEvents , nil
51
66
}
52
67
53
68
func buildServers (nodeIps []string , port v1.ServicePort ) ([]nginxClient.StreamUpstreamServer , error ) {
0 commit comments