@@ -12,15 +12,17 @@ import (
12
12
"github.com/prometheus/client_golang/prometheus"
13
13
)
14
14
15
+ // Listener contains the relevant ID, Rules, and current/desired Listeners
15
16
type Listener struct {
16
- IngressId * string
17
+ IngressID * string
17
18
CurrentListener * elbv2.Listener
18
19
DesiredListener * elbv2.Listener
19
20
Rules Rules
20
21
deleted bool
21
22
}
22
23
23
- func NewListener (annotations * config.AnnotationsT , ingressId * string ) []* Listener {
24
+ // NewListener returns a new alb.Listener based on the parameters provided.
25
+ func NewListener (annotations * config.AnnotationsT , ingressID * string ) []* Listener {
24
26
listeners := []* Listener {}
25
27
26
28
for _ , port := range annotations .Port {
@@ -49,7 +51,7 @@ func NewListener(annotations *config.AnnotationsT, ingressId *string) []*Listene
49
51
50
52
listenerT := & Listener {
51
53
DesiredListener : listener ,
52
- IngressId : ingressId ,
54
+ IngressID : ingressID ,
53
55
}
54
56
55
57
listeners = append (listeners , listenerT )
@@ -66,21 +68,21 @@ func (l *Listener) SyncState(lb *LoadBalancer) *Listener {
66
68
switch {
67
69
// No DesiredState means Listener should be deleted.
68
70
case l .DesiredListener == nil :
69
- log .Infof ("Start Listener deletion." , * l .IngressId )
71
+ log .Infof ("Start Listener deletion." , * l .IngressID )
70
72
l .delete (lb )
71
73
72
74
// No CurrentState means Listener doesn't exist in AWS and should be created.
73
75
case l .CurrentListener == nil :
74
- log .Infof ("Start Listener creation." , * l .IngressId )
76
+ log .Infof ("Start Listener creation." , * l .IngressID )
75
77
l .create (lb )
76
78
77
79
// Current and Desired exist and need for modification should be evaluated.
78
80
case l .needsModification (l .DesiredListener ):
79
- log .Infof ("Start Listener modification." , * l .IngressId )
81
+ log .Infof ("Start Listener modification." , * l .IngressID )
80
82
l .modify (lb )
81
83
82
84
default :
83
- log .Debugf ("No listener modification required." , * l .IngressId )
85
+ log .Debugf ("No listener modification required." , * l .IngressID )
84
86
}
85
87
86
88
return l
@@ -98,11 +100,11 @@ func (l *Listener) create(lb *LoadBalancer) error {
98
100
// use the Kubernetes service name attached to that.
99
101
for _ , rule := range l .Rules {
100
102
if * rule .DesiredRule .IsDefault {
101
- log .Infof ("Located default rule. Rule: %s" , * l .IngressId , log .Prettify (rule .DesiredRule ))
103
+ log .Infof ("Located default rule. Rule: %s" , * l .IngressID , log .Prettify (rule .DesiredRule ))
102
104
tgIndex := lb .TargetGroups .LookupBySvc (rule .SvcName )
103
105
if tgIndex < 0 {
104
106
log .Errorf ("Failed to locate TargetGroup related to this service. Defaulting to first Target Group. SVC: %s" ,
105
- * l .IngressId , rule .SvcName )
107
+ * l .IngressID , rule .SvcName )
106
108
} else {
107
109
ctg := lb .TargetGroups [tgIndex ].CurrentTargetGroup
108
110
l .DesiredListener .DefaultActions [0 ].TargetGroupArn = ctg .TargetGroupArn
@@ -126,20 +128,20 @@ func (l *Listener) create(lb *LoadBalancer) error {
126
128
createListenerOutput , err := awsutil .Elbv2svc .Svc .CreateListener (createListenerInput )
127
129
if err != nil && err .(awserr.Error ).Code () != "TargetGroupAssociationLimit" {
128
130
awsutil .AWSErrorCount .With (prometheus.Labels {"service" : "ELBV2" , "request" : "CreateListener" }).Add (float64 (1 ))
129
- log .Errorf ("Failed Listener creation. Error: %s." , * l .IngressId , err .Error ())
131
+ log .Errorf ("Failed Listener creation. Error: %s." , * l .IngressID , err .Error ())
130
132
return err
131
133
} else if err != nil && err .(awserr.Error ).Code () == "TargetGroupAssociationLimit" {
132
134
awsutil .AWSErrorCount .With (prometheus.Labels {"service" : "ELBV2" , "request" : "CreateListener" }).Add (float64 (1 ))
133
135
glog .Error ("Received a TargetGroupAssociationLimit error" )
134
136
// Something strange happening here, the original Listener doesnt have the LoadBalancerArn but a describe will return a Listener with the ARN
135
137
// l, _ := elbv2svc.describeListeners(lb.LoadBalancer.LoadBalancerArn)
136
- log .Errorf ("Failed Listener creation. Error: %s." , * l .IngressId , err .Error ())
138
+ log .Errorf ("Failed Listener creation. Error: %s." , * l .IngressID , err .Error ())
137
139
return err
138
140
}
139
141
140
142
l .CurrentListener = createListenerOutput .Listeners [0 ]
141
143
log .Infof ("Completed Listener creation. ARN: %s | Port: %s | Proto: %s." ,
142
- * l .IngressId , * l .CurrentListener .ListenerArn , * l .CurrentListener .Port , * l .CurrentListener .Protocol )
144
+ * l .IngressID , * l .CurrentListener .ListenerArn , * l .CurrentListener .Port , * l .CurrentListener .Protocol )
143
145
return nil
144
146
}
145
147
@@ -150,12 +152,12 @@ func (l *Listener) modify(lb *LoadBalancer) error {
150
152
return l .create (lb )
151
153
}
152
154
153
- glog .Infof ("Modifying existing %s listener %s" , * lb .Id , * l .CurrentListener .ListenerArn )
155
+ glog .Infof ("Modifying existing %s listener %s" , * lb .ID , * l .CurrentListener .ListenerArn )
154
156
//glog.Infof("Have %v, want %v", l.CurrentListener, l.DesiredListener)
155
157
glog .Info ("NOT IMPLEMENTED!!!!" )
156
158
157
159
log .Infof ("Completed Listener modification. ARN: %s | Port: %s | Proto: %s." ,
158
- * l .IngressId , * l .CurrentListener .ListenerArn , * l .CurrentListener .Port , * l .CurrentListener .Protocol )
160
+ * l .IngressID , * l .CurrentListener .ListenerArn , * l .CurrentListener .Port , * l .CurrentListener .Protocol )
159
161
return nil
160
162
}
161
163
@@ -174,8 +176,8 @@ func (l *Listener) delete(lb *LoadBalancer) error {
174
176
if awsErr .Code () == elbv2 .ErrCodeListenerNotFoundException {
175
177
// TODO: Reorder syncs so route53 is last and this is handled in R53 resource record set syncs
176
178
// (relates to https://git.tm.tmcs/kubernetes/alb-ingress/issues/33)
177
- log .Warnf ("Listener not found during deletion attempt. It was likely already deleted when the ELBV2 (ALB) was deleted." , * l .IngressId )
178
- log .Infof ("Completed Listener deletion. ARN: %s" , * l .IngressId , * l .CurrentListener .ListenerArn )
179
+ log .Warnf ("Listener not found during deletion attempt. It was likely already deleted when the ELBV2 (ALB) was deleted." , * l .IngressID )
180
+ log .Infof ("Completed Listener deletion. ARN: %s" , * l .IngressID , * l .CurrentListener .ListenerArn )
179
181
lb .Deleted = true
180
182
return nil
181
183
}
@@ -185,7 +187,7 @@ func (l *Listener) delete(lb *LoadBalancer) error {
185
187
}
186
188
187
189
l .deleted = true
188
- log .Infof ("Completed Listener deletion. ARN: %s" , * l .IngressId , * l .CurrentListener .ListenerArn )
190
+ log .Infof ("Completed Listener deletion. ARN: %s" , * l .IngressID , * l .CurrentListener .ListenerArn )
189
191
return nil
190
192
}
191
193
0 commit comments