Skip to content

Commit f41b76b

Browse files
committed
Stop passing logger between functions
1 parent aaff4e8 commit f41b76b

File tree

12 files changed

+135
-79
lines changed

12 files changed

+135
-79
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ This tool is **HIGHLY DESTRUCTIVE** and can deletes all resources! This should b
2020
- [ ] Allow authentication username and password set in config file
2121
- [ ] Create Kubernetes Manifests and Helm Charts
2222
- [ ] Create CLI
23+
- [ ] Save infra state and desired state in persistent storage
2324

2425
#### Supported Resources
2526
- AWS: https://github.com/MeNsaaH/reka/issues/1

provider/aws/ec2.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@ import (
77

88
"github.com/aws/aws-sdk-go-v2/aws"
99
"github.com/aws/aws-sdk-go-v2/service/ec2"
10-
log "github.com/sirupsen/logrus"
1110

1211
"github.com/mensaah/reka/provider/aws/utils"
1312
"github.com/mensaah/reka/resource"
1413
)
1514

1615
// returns only instance IDs of unprotected ec2 instances
17-
func getInstanceDetails(svc *ec2.Client, output *ec2.DescribeInstancesOutput, region string, logger *log.Entry) ([]*resource.Resource, error) {
16+
func getInstanceDetails(svc *ec2.Client, output *ec2.DescribeInstancesOutput, region string) ([]*resource.Resource, error) {
1817
var ec2Instances []*resource.Resource
19-
logger.Debug("Fetching EC2 Details")
18+
ec2Logger.Debug("Fetching EC2 Details")
2019
for _, reservation := range output.Reservations {
2120
for _, instance := range reservation.Instances {
2221
// https://stackoverflow.com/a/48554123/7167357
@@ -40,8 +39,8 @@ func getInstanceDetails(svc *ec2.Client, output *ec2.DescribeInstancesOutput, re
4039
}
4140

4241
// GetAllEC2Instances Get all instances
43-
func GetAllEC2Instances(cfg aws.Config, logger *log.Entry) ([]*resource.Resource, error) {
44-
logger.Debug("Fetching EC2 Instances")
42+
func GetAllEC2Instances(cfg aws.Config) ([]*resource.Resource, error) {
43+
ec2Logger.Debug("Fetching EC2 Instances")
4544

4645
svc := ec2.NewFromConfig(cfg)
4746
params := &ec2.DescribeInstancesInput{}
@@ -52,16 +51,16 @@ func GetAllEC2Instances(cfg aws.Config, logger *log.Entry) ([]*resource.Resource
5251
if err != nil {
5352
return nil, err
5453
}
55-
instances, err := getInstanceDetails(svc, resp, cfg.Region, logger)
54+
instances, err := getInstanceDetails(svc, resp, cfg.Region)
5655
if err != nil {
5756
return nil, err
5857
}
59-
logger.Debugf("Found %d EC2 instances", len(instances))
58+
ec2Logger.Debugf("Found %d EC2 instances", len(instances))
6059
return instances, nil
6160
}
6261

6362
// StopEC2Instances Stop Running Instances
64-
func StopEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *log.Entry) error {
63+
func StopEC2Instances(cfg aws.Config, instances []*resource.Resource) error {
6564
svc := ec2.NewFromConfig(cfg)
6665
var instanceIds []*string
6766

@@ -75,7 +74,7 @@ func StopEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *lo
7574
return nil
7675
}
7776

78-
logger.Debug("Stopping EC2 Instances ", instanceIds, " ...")
77+
ec2Logger.Debug("Stopping EC2 Instances ", instanceIds, " ...")
7978

8079
params := &ec2.StopInstancesInput{
8180
InstanceIds: instanceIds,
@@ -90,7 +89,7 @@ func StopEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *lo
9089
}
9190

9291
// ResumeEC2Instances Resume Stopped instances
93-
func ResumeEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *log.Entry) error {
92+
func ResumeEC2Instances(cfg aws.Config, instances []*resource.Resource) error {
9493
svc := ec2.NewFromConfig(cfg)
9594
var instanceIds []*string
9695

@@ -107,7 +106,7 @@ func ResumeEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *
107106
params := &ec2.StartInstancesInput{
108107
InstanceIds: instanceIds,
109108
}
110-
logger.Debug("Starting EC2 Instances ", instanceIds, " ...")
109+
ec2Logger.Debug("Starting EC2 Instances ", instanceIds, " ...")
111110

112111
resp, err := svc.StartInstances(context.Background(), params)
113112
// TODO Attach error to specific instance where the error occurred if possible
@@ -118,7 +117,7 @@ func ResumeEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *
118117
}
119118

120119
// TerminateEC2Instances Shutdown instances
121-
func TerminateEC2Instances(cfg aws.Config, instances []*resource.Resource, logger *log.Entry) error {
120+
func TerminateEC2Instances(cfg aws.Config, instances []*resource.Resource) error {
122121
svc := ec2.NewFromConfig(cfg)
123122
var instanceIds []*string
124123

@@ -132,7 +131,7 @@ func TerminateEC2Instances(cfg aws.Config, instances []*resource.Resource, logge
132131
return nil
133132
}
134133

135-
logger.Debug("Terminating EC2 Instances ", instanceIds, " ...")
134+
ec2Logger.Debug("Terminating EC2 Instances ", instanceIds, " ...")
136135

137136
params := &ec2.TerminateInstancesInput{
138137
InstanceIds: instanceIds,

provider/aws/ec2_types.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package aws
22

33
import (
4+
log "github.com/sirupsen/logrus"
5+
46
"github.com/mensaah/reka/config"
57
"github.com/mensaah/reka/resource"
68
)
@@ -14,25 +16,27 @@ const (
1416
ec2LongName = "Elastic Compute Cloud"
1517
)
1618

19+
var ec2Logger *log.Entry
20+
1721
func newEC2Manager(cfg *config.Config, logPath string) resource.Manager {
18-
logger := config.GetLogger(ec2Name, logPath)
22+
ec2Logger = config.GetLogger(ec2Name, logPath)
1923

2024
ec2Manager = resource.Manager{
2125
Name: ec2Name,
2226
LongName: ec2LongName,
2327
Config: cfg,
2428
Logger: logger,
2529
GetAll: func() ([]*resource.Resource, error) {
26-
return GetAllEC2Instances(*cfg.Aws, logger)
30+
return GetAllEC2Instances(*cfg.Aws)
2731
},
2832
Destroy: func(resources []*resource.Resource) error {
29-
return TerminateEC2Instances(*cfg.Aws, resources, logger)
33+
return TerminateEC2Instances(*cfg.Aws, resources)
3034
},
3135
Stop: func(resources []*resource.Resource) error {
32-
return StopEC2Instances(*cfg.Aws, resources, logger)
36+
return StopEC2Instances(*cfg.Aws, resources)
3337
},
3438
Resume: func(resources []*resource.Resource) error {
35-
return ResumeEC2Instances(*cfg.Aws, resources, logger)
39+
return ResumeEC2Instances(*cfg.Aws, resources)
3640
},
3741
}
3842
return ec2Manager

provider/aws/s3.go

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"github.com/mensaah/reka/resource"
1717
)
1818

19-
func getS3BucketRegion(cfg aws.Config, bucketName string, logger *log.Entry) (string, error) {
19+
func getS3BucketRegion(cfg aws.Config, bucketName string) (string, error) {
2020

2121
region, err := s3manager.GetBucketRegion(context.Background(), s3.NewFromConfig(cfg), bucketName)
2222
if err != nil {
@@ -28,12 +28,12 @@ func getS3BucketRegion(cfg aws.Config, bucketName string, logger *log.Entry) (st
2828
}
2929
return "", err
3030
}
31-
logger.Debugf("Bucket %s is in %s region\n", bucketName, region)
31+
s3Logger.Debugf("Bucket %s is in %s region\n", bucketName, region)
3232
return region, err
3333
}
3434

35-
func getS3BucketTags(svc *s3.Client, bucketName string, logger *log.Entry) (resource.Tags, error) {
36-
logger.Debug("Fetching S3 Tags")
35+
func getS3BucketTags(svc *s3.Client, bucketName string) (resource.Tags, error) {
36+
s3Logger.Debug("Fetching S3 Tags")
3737
input := &s3.GetBucketTaggingInput{
3838
Bucket: aws.String(bucketName),
3939
}
@@ -48,19 +48,19 @@ func getS3BucketTags(svc *s3.Client, bucketName string, logger *log.Entry) (reso
4848
}
4949

5050
// returns only s3Bucket IDs of unprotected s3 instances
51-
func getS3BucketsDetails(svc *s3.Client, cfg aws.Config, output *s3.ListBucketsOutput, logger *log.Entry) ([]*resource.Resource, error) {
51+
func getS3BucketsDetails(svc *s3.Client, cfg aws.Config, output *s3.ListBucketsOutput) ([]*resource.Resource, error) {
5252
var s3Buckets []*resource.Resource
5353
for _, s3Bucket := range output.Buckets {
5454
// Get tags
55-
tags, err := getS3BucketTags(svc, *s3Bucket.Name, logger)
55+
tags, err := getS3BucketTags(svc, *s3Bucket.Name)
5656
if err != nil {
57-
logger.Error(err)
57+
s3Logger.Error(err)
5858
}
5959
tags["creation-date"] = (*s3Bucket.CreationDate).String()
6060
// Get region
61-
s3Region, err := getS3BucketRegion(cfg, *s3Bucket.Name, logger)
61+
s3Region, err := getS3BucketRegion(cfg, *s3Bucket.Name)
6262
if err != nil {
63-
logger.Errorf("Could not get region for Bucket %s", *s3Bucket.Name)
63+
s3Logger.Errorf("Could not get region for Bucket %s", *s3Bucket.Name)
6464
continue
6565
}
6666
s3 := NewResource(*s3Bucket.Name, s3Name)
@@ -72,14 +72,14 @@ func getS3BucketsDetails(svc *s3.Client, cfg aws.Config, output *s3.ListBucketsO
7272
s3Buckets = append(s3Buckets, s3)
7373
}
7474

75-
logger.Debugf("Found %d buckets", len(s3Buckets))
75+
s3Logger.Debugf("Found %d buckets", len(s3Buckets))
7676

7777
return s3Buckets, nil
7878
}
7979

8080
// GetAllS3Buckets Get all s3Buckets
81-
func getAllS3Buckets(cfg aws.Config, logger *log.Entry) ([]*resource.Resource, error) {
82-
logger.Debug("Fetching S3 Buckets")
81+
func getAllS3Buckets(cfg aws.Config) ([]*resource.Resource, error) {
82+
s3Logger.Debug("Fetching S3 Buckets")
8383
svc := s3.NewFromConfig(cfg)
8484
params := &s3.ListBucketsInput{}
8585

@@ -88,15 +88,20 @@ func getAllS3Buckets(cfg aws.Config, logger *log.Entry) ([]*resource.Resource, e
8888
if err != nil {
8989
return nil, err
9090
}
91-
buckets, err := getS3BucketsDetails(svc, cfg, resp, logger)
91+
buckets, err := getS3BucketsDetails(svc, cfg, resp)
9292
if err != nil {
9393
return nil, err
9494
}
9595
return buckets, nil
9696
}
9797

98+
// Empties a Bucket
99+
func emptyBucket(svc *s3.Client, bucket *resource.Resource) error {
100+
return nil
101+
}
102+
98103
// Destroys a Single Bucket
99-
func destroyBucket(svc *s3.Client, bucket *resource.Resource, logger *log.Entry) error {
104+
func destroyBucket(svc *s3.Client, bucket *resource.Resource) error {
100105
input := &s3.DeleteBucketInput{
101106
Bucket: aws.String(bucket.UUID),
102107
}
@@ -109,7 +114,7 @@ func destroyBucket(svc *s3.Client, bucket *resource.Resource, logger *log.Entry)
109114
return nil
110115
}
111116

112-
func destroyS3Buckets(cfg aws.Config, s3Buckets []*resource.Resource, logger *log.Entry) error {
117+
func destroyS3Buckets(cfg aws.Config, s3Buckets []*resource.Resource) error {
113118
bucketsPerRegion := make(map[string][]*resource.Resource)
114119
delCount := 0
115120
if len(s3Buckets) <= 0 {
@@ -126,15 +131,15 @@ func destroyS3Buckets(cfg aws.Config, s3Buckets []*resource.Resource, logger *lo
126131
options.Region = region
127132
})
128133
for _, bucket := range buckets {
129-
err := destroyBucket(svc, bucket, logger)
134+
err := destroyBucket(svc, bucket)
130135
if err != nil {
131-
logger.Errorf("Failed to delete Bucket %d - Error %s ", bucket.ID, err.Error())
136+
s3Logger.Errorf("Failed to delete Bucket %d - Error %s ", bucket.ID, err.Error())
132137
bucket.DestroyError = err
133138
} else {
134139
delCount++
135140
}
136141
}
137142
}
138-
logger.Infof("Destroyed %d S3 buckets", delCount)
143+
s3Logger.Infof("Destroyed %d S3 buckets", delCount)
139144
return nil
140145
}

provider/aws/s3_types.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package aws
22

33
import (
4+
log "github.com/sirupsen/logrus"
5+
46
"github.com/mensaah/reka/config"
57
"github.com/mensaah/reka/resource"
68
)
@@ -12,20 +14,22 @@ const (
1214
s3LongName = "Simple Storage Service"
1315
)
1416

17+
var s3Logger *log.Entry
18+
1519
func newS3Manager(cfg *config.Config, logPath string) resource.Manager {
1620

17-
logger := config.GetLogger(s3Name, logPath)
21+
s3Logger = config.GetLogger(s3Name, logPath)
1822

1923
return resource.Manager{
2024
Name: s3Name,
2125
LongName: s3LongName,
2226
Config: cfg,
2327
Logger: logger,
2428
GetAll: func() ([]*resource.Resource, error) {
25-
return getAllS3Buckets(*cfg.Aws, logger)
29+
return getAllS3Buckets(*cfg.Aws)
2630
},
2731
Destroy: func(resources []*resource.Resource) error {
28-
return destroyS3Buckets(*cfg.Aws, resources, logger)
32+
return destroyS3Buckets(*cfg.Aws, resources)
2933
},
3034
}
3135
}

0 commit comments

Comments
 (0)