Skip to content

Commit f9062ca

Browse files
authored
Merge pull request #1 from bigkraig/refactor
Working on bringing up our lint score
2 parents 8578c70 + 5759d7c commit f9062ca

16 files changed

+242
-209
lines changed

awsutil/ec2.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/aws/aws-sdk-go/service/ec2"
1111
"github.com/aws/aws-sdk-go/service/ec2/ec2iface"
1212
"github.com/golang/glog"
13+
"github.com/karlseguin/ccache"
1314
"github.com/prometheus/client_golang/prometheus"
1415
)
1516

@@ -18,6 +19,9 @@ type EC2 struct {
1819
Svc ec2iface.EC2API
1920
}
2021

22+
var ec2Cache = ccache.New(ccache.Configure())
23+
24+
// NewEC2 returns an awsutil EC2 service
2125
func NewEC2(awsconfig *aws.Config) *EC2 {
2226
awsSession, err := session.NewSession(awsconfig)
2327
if err != nil {
@@ -47,7 +51,7 @@ func (e *EC2) GetVPCID(subnets []*string) (*string, error) {
4751
}
4852

4953
key := fmt.Sprintf("%s-vpc", *subnets[0])
50-
item := Cache.Get(key)
54+
item := ec2Cache.Get(key)
5155

5256
if item == nil {
5357
subnetInfo, err := e.Svc.DescribeSubnets(&ec2.DescribeSubnetsInput{
@@ -63,12 +67,12 @@ func (e *EC2) GetVPCID(subnets []*string) (*string, error) {
6367
}
6468

6569
vpc = subnetInfo.Subnets[0].VpcId
66-
Cache.Set(key, vpc, time.Minute*60)
70+
ec2Cache.Set(key, vpc, time.Minute*60)
6771

68-
AWSCache.With(prometheus.Labels{"cache": "subnets", "action": "miss"}).Add(float64(1))
72+
AWSCache.With(prometheus.Labels{"cache": "vpc", "action": "miss"}).Add(float64(1))
6973
} else {
7074
vpc = item.Value().(*string)
71-
AWSCache.With(prometheus.Labels{"cache": "subnets", "action": "hit"}).Add(float64(1))
75+
AWSCache.With(prometheus.Labels{"cache": "vpc", "action": "hit"}).Add(float64(1))
7276
}
7377

7478
return vpc, nil

awsutil/route53.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"github.com/golang/glog"
9+
"github.com/karlseguin/ccache"
910
"github.com/prometheus/client_golang/prometheus"
1011

1112
"github.com/aws/aws-sdk-go/aws"
@@ -21,6 +22,8 @@ type Route53 struct {
2122
Svc route53iface.Route53API
2223
}
2324

25+
var r53Cache = ccache.New(ccache.Configure())
26+
2427
func NewRoute53(awsconfig *aws.Config) *Route53 {
2528
awsSession, err := session.NewSession(awsconfig)
2629
if err != nil {
@@ -69,7 +72,7 @@ func (r *Route53) GetZoneID(hostname *string) (*route53.HostedZone, error) {
6972
return nil, err
7073
}
7174

72-
item := Cache.Get("r53zone " + *zone)
75+
item := r53Cache.Get("r53zone " + *zone)
7376
if item != nil {
7477
AWSCache.With(prometheus.Labels{"cache": "zone", "action": "hit"}).Add(float64(1))
7578
return item.Value().(*route53.HostedZone), nil
@@ -101,7 +104,7 @@ func (r *Route53) GetZoneID(hostname *string) (*route53.HostedZone, error) {
101104
zoneName := strings.TrimSuffix(*i.Name, ".")
102105
if *zone == zoneName {
103106
// glog.Infof("Found DNS Zone %s with ID %s", zoneName, *i.Id)
104-
Cache.Set("r53zone "+*zone, i, time.Minute*60)
107+
r53Cache.Set("r53zone "+*zone, i, time.Minute*60)
105108
return i, nil
106109
}
107110
}

awsutil/util.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,53 @@
11
package awsutil
22

3-
import (
4-
"github.com/karlseguin/ccache"
5-
"github.com/prometheus/client_golang/prometheus"
6-
)
3+
import "github.com/prometheus/client_golang/prometheus"
74

85
var (
6+
// Route53svc is a pointer to the awsutil Route53 service
97
Route53svc *Route53
10-
Elbv2svc *ELBV2
11-
Ec2svc *EC2
12-
AWSDebug bool
8+
// Elbv2svc is a pointer to the awsutil ELBV2 service
9+
Elbv2svc *ELBV2
10+
// Ec2svc is a pointer to the awsutil EC2 service
11+
Ec2svc *EC2
12+
// AWSDebug turns on AWS API debug logging
13+
AWSDebug bool
1314

15+
// OnUpdateCount is a counter of the controller OnUpdate calls
1416
OnUpdateCount = prometheus.NewCounter(prometheus.CounterOpts{
1517
Name: "albingress_updates",
1618
Help: "Number of times OnUpdate has been called.",
1719
},
1820
)
21+
22+
// ReloadCount is a counter of the controller Reload calls
1923
ReloadCount = prometheus.NewCounter(prometheus.CounterOpts{
2024
Name: "albingress_reloads",
2125
Help: "Number of times Reload has been called.",
2226
},
2327
)
28+
29+
// AWSErrorCount is a counter of AWS errors
2430
AWSErrorCount = prometheus.NewCounterVec(prometheus.CounterOpts{
2531
Name: "albingress_aws_errors",
2632
Help: "Number of errors from the AWS API",
2733
},
2834
[]string{"service", "request"},
2935
)
36+
37+
// ManagedIngresses contains the current tally of managed ingresses
3038
ManagedIngresses = prometheus.NewGauge(prometheus.GaugeOpts{
3139
Name: "albingress_managed_ingresses",
3240
Help: "Number of ingresses being managed",
3341
})
42+
43+
// AWSCache contains the hits and misses to our caches
3444
AWSCache = prometheus.NewCounterVec(prometheus.CounterOpts{
3545
Name: "albingress_cache",
3646
Help: "Number of ingresses being managed",
3747
},
3848
[]string{"cache", "action"})
49+
50+
// AWSRequest contains the requests made to the AWS API
3951
AWSRequest = prometheus.NewCounterVec(prometheus.CounterOpts{
4052
Name: "albingress_aws_requests",
4153
Help: "Number of requests made to the AWS API",
@@ -51,5 +63,3 @@ func init() {
5163
prometheus.MustRegister(AWSCache)
5264
prometheus.MustRegister(AWSRequest)
5365
}
54-
55-
var Cache = ccache.New(ccache.Configure())

controller/alb/listener.go

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,17 @@ import (
1212
"github.com/prometheus/client_golang/prometheus"
1313
)
1414

15+
// Listener contains the relevant ID, Rules, and current/desired Listeners
1516
type Listener struct {
16-
IngressId *string
17+
IngressID *string
1718
CurrentListener *elbv2.Listener
1819
DesiredListener *elbv2.Listener
1920
Rules Rules
2021
deleted bool
2122
}
2223

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 {
2426
listeners := []*Listener{}
2527

2628
for _, port := range annotations.Port {
@@ -49,7 +51,7 @@ func NewListener(annotations *config.AnnotationsT, ingressId *string) []*Listene
4951

5052
listenerT := &Listener{
5153
DesiredListener: listener,
52-
IngressId: ingressId,
54+
IngressID: ingressID,
5355
}
5456

5557
listeners = append(listeners, listenerT)
@@ -66,21 +68,21 @@ func (l *Listener) SyncState(lb *LoadBalancer) *Listener {
6668
switch {
6769
// No DesiredState means Listener should be deleted.
6870
case l.DesiredListener == nil:
69-
log.Infof("Start Listener deletion.", *l.IngressId)
71+
log.Infof("Start Listener deletion.", *l.IngressID)
7072
l.delete(lb)
7173

7274
// No CurrentState means Listener doesn't exist in AWS and should be created.
7375
case l.CurrentListener == nil:
74-
log.Infof("Start Listener creation.", *l.IngressId)
76+
log.Infof("Start Listener creation.", *l.IngressID)
7577
l.create(lb)
7678

7779
// Current and Desired exist and need for modification should be evaluated.
7880
case l.needsModification(l.DesiredListener):
79-
log.Infof("Start Listener modification.", *l.IngressId)
81+
log.Infof("Start Listener modification.", *l.IngressID)
8082
l.modify(lb)
8183

8284
default:
83-
log.Debugf("No listener modification required.", *l.IngressId)
85+
log.Debugf("No listener modification required.", *l.IngressID)
8486
}
8587

8688
return l
@@ -98,11 +100,11 @@ func (l *Listener) create(lb *LoadBalancer) error {
98100
// use the Kubernetes service name attached to that.
99101
for _, rule := range l.Rules {
100102
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))
102104
tgIndex := lb.TargetGroups.LookupBySvc(rule.SvcName)
103105
if tgIndex < 0 {
104106
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)
106108
} else {
107109
ctg := lb.TargetGroups[tgIndex].CurrentTargetGroup
108110
l.DesiredListener.DefaultActions[0].TargetGroupArn = ctg.TargetGroupArn
@@ -126,20 +128,20 @@ func (l *Listener) create(lb *LoadBalancer) error {
126128
createListenerOutput, err := awsutil.Elbv2svc.Svc.CreateListener(createListenerInput)
127129
if err != nil && err.(awserr.Error).Code() != "TargetGroupAssociationLimit" {
128130
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())
130132
return err
131133
} else if err != nil && err.(awserr.Error).Code() == "TargetGroupAssociationLimit" {
132134
awsutil.AWSErrorCount.With(prometheus.Labels{"service": "ELBV2", "request": "CreateListener"}).Add(float64(1))
133135
glog.Error("Received a TargetGroupAssociationLimit error")
134136
// Something strange happening here, the original Listener doesnt have the LoadBalancerArn but a describe will return a Listener with the ARN
135137
// 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())
137139
return err
138140
}
139141

140142
l.CurrentListener = createListenerOutput.Listeners[0]
141143
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)
143145
return nil
144146
}
145147

@@ -150,12 +152,12 @@ func (l *Listener) modify(lb *LoadBalancer) error {
150152
return l.create(lb)
151153
}
152154

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)
154156
//glog.Infof("Have %v, want %v", l.CurrentListener, l.DesiredListener)
155157
glog.Info("NOT IMPLEMENTED!!!!")
156158

157159
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)
159161
return nil
160162
}
161163

@@ -174,8 +176,8 @@ func (l *Listener) delete(lb *LoadBalancer) error {
174176
if awsErr.Code() == elbv2.ErrCodeListenerNotFoundException {
175177
// TODO: Reorder syncs so route53 is last and this is handled in R53 resource record set syncs
176178
// (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)
179181
lb.Deleted = true
180182
return nil
181183
}
@@ -185,7 +187,7 @@ func (l *Listener) delete(lb *LoadBalancer) error {
185187
}
186188

187189
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)
189191
return nil
190192
}
191193

controller/alb/listeners.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import (
44
"github.com/aws/aws-sdk-go/service/elbv2"
55
)
66

7+
// Listeners is a slice of Listener pointers
78
type Listeners []*Listener
89

9-
func (l Listeners) Find(listener *elbv2.Listener) int {
10-
for p, v := range l {
10+
// Find returns the position of the listener, returning -1 if unfound.
11+
func (ls Listeners) Find(listener *elbv2.Listener) int {
12+
for p, v := range ls {
1113
if !v.needsModification(listener) {
1214
return p
1315
}
@@ -35,8 +37,9 @@ func (ls Listeners) SyncState(lb *LoadBalancer, tgs *TargetGroups) Listeners {
3537
return listeners
3638
}
3739

38-
func (l Listeners) StripDesiredState() {
39-
for _, listener := range l {
40+
// StripDesiredState removes the DesiredListener from all Listeners in the slice.
41+
func (ls Listeners) StripDesiredState() {
42+
for _, listener := range ls {
4043
listener.DesiredListener = nil
4144
}
4245
}
@@ -47,8 +50,8 @@ func (l Listeners) StripDesiredState() {
4750
//
4851
// Additionally, since Rules are also removed its Listener is, this also calles StripDesiredState on
4952
// the Rules attached to each listener.
50-
func (l Listeners) StripCurrentState() {
51-
for _, listener := range l {
53+
func (ls Listeners) StripCurrentState() {
54+
for _, listener := range ls {
5255
listener.CurrentListener = nil
5356
listener.Rules.StripCurrentState()
5457
}

0 commit comments

Comments
 (0)