Skip to content

Commit 6b27a03

Browse files
committed
Created a NewCurrentRules and moved it into NewCurrentListener instead of some logic inside of NewCurrentListeners
1 parent 459bfdb commit 6b27a03

File tree

3 files changed

+57
-31
lines changed

3 files changed

+57
-31
lines changed

pkg/alb/ls/listener.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/aws/aws-sdk-go/aws"
77
"github.com/aws/aws-sdk-go/service/elbv2"
88
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/alb/rs"
9+
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/alb/tg"
910
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/annotations"
1011
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/aws/albelbv2"
1112
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/util/log"
@@ -52,16 +53,27 @@ func NewDesiredListener(o *NewDesiredListenerOptions) *Listener {
5253
}
5354

5455
type NewCurrentListenerOptions struct {
55-
Listener *elbv2.Listener
56-
Logger *log.Logger
56+
Listener *elbv2.Listener
57+
Logger *log.Logger
58+
TargetGroups tg.TargetGroups
5759
}
5860

5961
// NewCurrentListener returns a new listener.Listener based on an elbv2.Listener.
60-
func NewCurrentListener(o *NewCurrentListenerOptions) *Listener {
62+
func NewCurrentListener(o *NewCurrentListenerOptions) (*Listener, error) {
63+
rules, err := rs.NewCurrentRules(&rs.NewCurrentRulesOptions{
64+
ListenerArn: o.Listener.ListenerArn,
65+
Logger: o.Logger,
66+
TargetGroups: o.TargetGroups,
67+
})
68+
if err != nil {
69+
return nil, err
70+
}
71+
6172
return &Listener{
6273
ls: ls{current: o.Listener},
6374
logger: o.Logger,
64-
}
75+
rules: rules,
76+
}, nil
6577
}
6678

6779
// Reconcile compares the current and desired state of this Listener instance. Comparison

pkg/alb/ls/listeners.go

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package ls
22

33
import (
4-
"fmt"
5-
6-
"github.com/aws/aws-sdk-go/aws/awsutil"
74
"github.com/aws/aws-sdk-go/service/elbv2"
85

96
extensions "k8s.io/api/extensions/v1beta1"
107

118
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/alb/rs"
129
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/alb/tg"
1310
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/annotations"
14-
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/aws/albelbv2"
1511
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/util/log"
1612
)
1713

@@ -74,33 +70,15 @@ func NewCurrentListeners(o *NewCurrentListenersOptions) (Listeners, error) {
7470
var output Listeners
7571

7672
for _, l := range o.Listeners {
77-
o.Logger.Infof("Fetching Rules for Listener %s", *l.ListenerArn)
78-
rules, err := albelbv2.ELBV2svc.DescribeRules(&elbv2.DescribeRulesInput{ListenerArn: l.ListenerArn})
73+
newListener, err := NewCurrentListener(&NewCurrentListenerOptions{
74+
Listener: l,
75+
Logger: o.Logger,
76+
TargetGroups: o.TargetGroups,
77+
})
7978
if err != nil {
8079
return nil, err
8180
}
8281

83-
newListener := NewCurrentListener(&NewCurrentListenerOptions{
84-
Listener: l,
85-
Logger: o.Logger,
86-
})
87-
88-
for _, r := range rules.Rules {
89-
// TODO LOOKUP svcName based on TG
90-
i, tg := o.TargetGroups.FindCurrentByARN(*r.Actions[0].TargetGroupArn)
91-
if i < 0 {
92-
return nil, fmt.Errorf("failed to find a target group associated with a rule. This should not be possible. Rule: %s", awsutil.Prettify(r.RuleArn))
93-
}
94-
o.Logger.Debugf("Assembling rule for: %s", log.Prettify(r.Conditions))
95-
newRule := rs.NewCurrentRule(&rs.NewCurrentRuleOptions{
96-
SvcName: tg.SvcName,
97-
Rule: r,
98-
Logger: o.Logger,
99-
})
100-
101-
newListener.rules = append(newListener.rules, newRule)
102-
}
103-
10482
output = append(output, newListener)
10583
}
10684
return output, nil

pkg/alb/rs/rules.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,49 @@ import (
44
"fmt"
55

66
"github.com/aws/aws-sdk-go/aws/awsutil"
7+
"github.com/aws/aws-sdk-go/service/elbv2"
78

89
extensions "k8s.io/api/extensions/v1beta1"
910

1011
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/alb/tg"
12+
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/aws/albelbv2"
1113
"github.com/kubernetes-sigs/aws-alb-ingress-controller/pkg/util/log"
1214
)
1315

16+
type NewCurrentRulesOptions struct {
17+
ListenerArn *string
18+
Logger *log.Logger
19+
TargetGroups tg.TargetGroups
20+
}
21+
22+
// NewCurrentRules
23+
func NewCurrentRules(o *NewCurrentRulesOptions) (Rules, error) {
24+
var rs Rules
25+
26+
o.Logger.Infof("Fetching Rules for Listener %s", *o.ListenerArn)
27+
rules, err := albelbv2.ELBV2svc.DescribeRules(&elbv2.DescribeRulesInput{ListenerArn: o.ListenerArn})
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
for _, r := range rules.Rules {
33+
// TODO LOOKUP svcName based on TG
34+
i, tg := o.TargetGroups.FindCurrentByARN(*r.Actions[0].TargetGroupArn)
35+
if i < 0 {
36+
return nil, fmt.Errorf("failed to find a target group associated with a rule. This should not be possible. Rule: %s", awsutil.Prettify(r.RuleArn))
37+
}
38+
39+
newRule := NewCurrentRule(&NewCurrentRuleOptions{
40+
SvcName: tg.SvcName,
41+
Rule: r,
42+
Logger: o.Logger,
43+
})
44+
45+
rs = append(rs, newRule)
46+
}
47+
return rs, nil
48+
}
49+
1450
type NewDesiredRulesOptions struct {
1551
Priority int
1652
Logger *log.Logger

0 commit comments

Comments
 (0)