Skip to content

Commit 7099642

Browse files
committed
refactored NewDesiredListeners
1 parent 6b27a03 commit 7099642

File tree

3 files changed

+55
-39
lines changed

3 files changed

+55
-39
lines changed

pkg/alb/ls/listener.go

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,22 @@ import (
1212
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/util/log"
1313
util "github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/util/types"
1414
api "k8s.io/api/core/v1"
15+
extensions "k8s.io/api/extensions/v1beta1"
1516
)
1617

1718
type NewDesiredListenerOptions struct {
18-
Port annotations.PortData
19-
CertificateArn *string
20-
Logger *log.Logger
21-
SslPolicy *string
19+
ExistingListener *Listener
20+
Port annotations.PortData
21+
CertificateArn *string
22+
Logger *log.Logger
23+
SslPolicy *string
24+
IngressRules []extensions.IngressRule
25+
IgnoreHostHeader bool
2226
}
2327

2428
// NewDesiredListener returns a new listener.Listener based on the parameters provided.
25-
func NewDesiredListener(o *NewDesiredListenerOptions) *Listener {
26-
listener := &elbv2.Listener{
29+
func NewDesiredListener(o *NewDesiredListenerOptions) (*Listener, error) {
30+
l := &elbv2.Listener{
2731
Port: aws.Int64(o.Port.Port),
2832
Protocol: aws.String("HTTP"),
2933
DefaultActions: []*elbv2.Action{
@@ -34,22 +38,48 @@ func NewDesiredListener(o *NewDesiredListenerOptions) *Listener {
3438
}
3539

3640
if o.CertificateArn != nil && o.Port.Scheme == "HTTPS" {
37-
listener.Certificates = []*elbv2.Certificate{
41+
l.Certificates = []*elbv2.Certificate{
3842
{CertificateArn: o.CertificateArn},
3943
}
40-
listener.Protocol = aws.String("HTTPS")
44+
l.Protocol = aws.String("HTTPS")
4145
}
4246

4347
if o.SslPolicy != nil && o.Port.Scheme == "HTTPS" {
44-
listener.SslPolicy = o.SslPolicy
48+
l.SslPolicy = o.SslPolicy
4549
}
4650

47-
listenerT := &Listener{
48-
ls: ls{desired: listener},
51+
listener := &Listener{
52+
ls: ls{desired: l},
4953
logger: o.Logger,
5054
}
5155

52-
return listenerT
56+
if o.ExistingListener != nil {
57+
listener.rules = o.ExistingListener.rules
58+
}
59+
60+
var p int
61+
for _, rule := range o.IngressRules {
62+
var err error
63+
64+
listener.rules, p, err = rs.NewDesiredRules(&rs.NewDesiredRulesOptions{
65+
Priority: p,
66+
Logger: o.Logger,
67+
ListenerRules: listener.rules,
68+
Rule: &rule,
69+
IgnoreHostHeader: o.IgnoreHostHeader,
70+
})
71+
if err != nil {
72+
return nil, err
73+
}
74+
}
75+
76+
if o.ExistingListener != nil {
77+
o.ExistingListener.ls.desired = listener.ls.desired
78+
o.ExistingListener.rules = listener.rules
79+
return o.ExistingListener, nil
80+
}
81+
82+
return listener, nil
5383
}
5484

5585
type NewCurrentListenerOptions struct {

pkg/alb/ls/listener_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func TestNewHTTPListener(t *testing.T) {
7878
Logger: logr,
7979
}
8080

81-
l := NewDesiredListener(o)
81+
l, _ := NewDesiredListener(o)
8282

8383
desiredProto := "HTTP"
8484
if o.CertificateArn != nil {
@@ -105,7 +105,7 @@ func TestNewHTTPSListener(t *testing.T) {
105105
Logger: logr,
106106
}
107107

108-
l := NewDesiredListener(o)
108+
l, _ := NewDesiredListener(o)
109109

110110
desiredProto := "HTTP"
111111
if o.CertificateArn != nil {

pkg/alb/ls/listeners.go

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -110,37 +110,23 @@ func NewDesiredListeners(o *NewDesiredListenersOptions) (Listeners, error) {
110110
}
111111
}
112112

113-
newListener := NewDesiredListener(&NewDesiredListenerOptions{
114-
Port: port,
115-
CertificateArn: o.Annotations.CertificateArn,
116-
Logger: o.Logger,
117-
SslPolicy: o.Annotations.SslPolicy,
113+
newListener, err := NewDesiredListener(&NewDesiredListenerOptions{
114+
Port: port,
115+
CertificateArn: o.Annotations.CertificateArn,
116+
Logger: o.Logger,
117+
SslPolicy: o.Annotations.SslPolicy,
118+
IngressRules: o.IngressRules,
119+
IgnoreHostHeader: *o.Annotations.IgnoreHostHeader,
120+
ExistingListener: thisListener,
118121
})
119-
120-
if thisListener != nil {
121-
thisListener.ls.desired = newListener.ls.desired
122-
newListener = thisListener
122+
if err != nil {
123+
return nil, err
123124
}
124125

125-
var p int
126-
for _, rule := range o.IngressRules {
127-
var err error
128-
129-
newListener.rules, p, err = rs.NewDesiredRules(&rs.NewDesiredRulesOptions{
130-
Priority: p,
131-
Logger: o.Logger,
132-
ListenerRules: newListener.rules,
133-
Rule: &rule,
134-
IgnoreHostHeader: *o.Annotations.IgnoreHostHeader,
135-
})
136-
if err != nil {
137-
return nil, err
138-
}
139-
}
140126
output = append(output, newListener)
141127
}
142128

143-
// Generate a listener for each existing known port that is not longer annotated
129+
// Generate a listener for each existing known port that is no longer annotated
144130
// representing it needs to be deleted
145131
for _, l := range o.ExistingListeners {
146132
exists := false

0 commit comments

Comments
 (0)