Skip to content

Commit 59700fc

Browse files
author
Chris Gilmer
authored
Merge pull request #71 from trussworks/cg_pass_logger
Add the logger to the user struct to pass around
2 parents 8c3348d + 910db63 commit 59700fc

File tree

2 files changed

+47
-43
lines changed

2 files changed

+47
-43
lines changed

cmd/main_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ func TestExistingAWSProfile(t *testing.T) {
4343
keyring, err := getKeyring("test")
4444
assert.NoError(t, err)
4545
user := User{
46+
Logger: logger,
4647
Name: "test",
4748
BaseProfile: &baseProfile,
4849
Output: "json",
@@ -76,6 +77,7 @@ func TestUpdateAWSConfigFile(t *testing.T) {
7677
keyring, err := getKeyring("test")
7778
assert.NoError(t, err)
7879
user := User{
80+
Logger: logger,
7981
Name: "test-user",
8082
BaseProfile: &baseProfile,
8183
RoleProfile: &roleProfile,
@@ -84,7 +86,7 @@ func TestUpdateAWSConfigFile(t *testing.T) {
8486
QrTempFile: nil,
8587
Keyring: keyring,
8688
}
87-
err = user.UpdateAWSConfigFile(logger)
89+
err = user.UpdateAWSConfigFile()
8890
assert.NoError(t, err)
8991
}
9092

cmd/setup.go

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func setupUserCheckConfig(v *viper.Viper) error {
8888

8989
// User holds information for the AWS user being configured by this script
9090
type User struct {
91+
Logger *log.Logger
9192
Name string
9293
BaseProfile *vault.Profile
9394
RoleProfile *vault.Profile
@@ -102,47 +103,47 @@ type User struct {
102103

103104
// Setup orchestrates the tasks to create the user's MFA and rotate access
104105
// keys.
105-
func (u *User) Setup(logger *log.Logger) {
106+
func (u *User) Setup() {
106107
err := u.PromptAccessCredentials()
107108
if err != nil {
108-
logger.Fatal(err)
109+
u.Logger.Fatal(err)
109110
}
110111

111-
err = u.AddVaultProfile(logger)
112+
err = u.AddVaultProfile()
112113
if err != nil {
113-
logger.Fatal(err)
114+
u.Logger.Fatal(err)
114115
}
115116

116117
if u.NoMFA {
117-
err = u.GetMFADevice(logger)
118+
err = u.GetMFADevice()
118119
if err != nil {
119-
logger.Fatal(err)
120+
u.Logger.Fatal(err)
120121
}
121122
} else {
122-
err = u.CreateVirtualMFADevice(logger)
123+
err = u.CreateVirtualMFADevice()
123124
if err != nil {
124-
logger.Fatal(err)
125+
u.Logger.Fatal(err)
125126
}
126127

127-
err = u.EnableVirtualMFADevice(logger)
128+
err = u.EnableVirtualMFADevice()
128129
if err != nil {
129-
logger.Fatal(err)
130+
u.Logger.Fatal(err)
130131
}
131132
}
132133

133-
err = u.UpdateAWSConfigFile(logger)
134+
err = u.UpdateAWSConfigFile()
134135
if err != nil {
135-
logger.Fatal(err)
136+
u.Logger.Fatal(err)
136137
}
137138

138-
err = u.RemoveVaultSession(logger)
139+
err = u.RemoveVaultSession()
139140
if err != nil {
140-
logger.Fatal(err)
141+
u.Logger.Fatal(err)
141142
}
142143

143-
err = u.RotateAccessKeys(logger)
144+
err = u.RotateAccessKeys()
144145
if err != nil {
145-
logger.Fatal(err)
146+
u.Logger.Fatal(err)
146147
}
147148

148149
}
@@ -182,8 +183,8 @@ func (u *User) newSession() (*session.Session, error) {
182183
return sess, nil
183184
}
184185

185-
func (u *User) newMFASession(logger *log.Logger) (*session.Session, error) {
186-
mfaToken := promptMFAtoken("Third ", logger)
186+
func (u *User) newMFASession() (*session.Session, error) {
187+
mfaToken := promptMFAtoken("Third ", u.Logger)
187188
basicSession, err := u.newSession()
188189
if err != nil {
189190
return nil, fmt.Errorf("unable to create new session: %w", err)
@@ -194,7 +195,7 @@ func (u *User) newMFASession(logger *log.Logger) (*session.Session, error) {
194195
TokenCode: aws.String(mfaToken),
195196
})
196197
if err != nil {
197-
logger.Fatalf("unable to get session token: %v", err)
198+
u.Logger.Fatalf("unable to get session token: %v", err)
198199
}
199200
mfaSession, err := session.NewSessionWithOptions(session.Options{
200201
Config: aws.Config{
@@ -214,8 +215,8 @@ func (u *User) newMFASession(logger *log.Logger) (*session.Session, error) {
214215

215216
// GetMFADevice gets the user's existing virtual MFA device and updates the
216217
// MFA serial in the profile field.
217-
func (u *User) GetMFADevice(logger *log.Logger) error {
218-
logger.Println("Getting the existing MFA device...")
218+
func (u *User) GetMFADevice() error {
219+
u.Logger.Println("Getting the existing MFA device...")
219220

220221
sess, err := u.newSession()
221222
if err != nil {
@@ -248,8 +249,8 @@ func (u *User) GetMFADevice(logger *log.Logger) error {
248249

249250
// CreateVirtualMFADevice creates the user's virtual MFA device and updates the
250251
// MFA serial in the profile field.
251-
func (u *User) CreateVirtualMFADevice(logger *log.Logger) error {
252-
logger.Println("Creating the virtual MFA device...")
252+
func (u *User) CreateVirtualMFADevice() error {
253+
u.Logger.Println("Creating the virtual MFA device...")
253254

254255
sess, err := u.newSession()
255256
if err != nil {
@@ -330,13 +331,13 @@ func getMFATokenPair(logger *log.Logger) MFATokenPair {
330331
}
331332

332333
// EnableVirtualMFADevice enables the user's MFA device
333-
func (u *User) EnableVirtualMFADevice(logger *log.Logger) error {
334-
logger.Println("Enabling the virtual MFA device")
334+
func (u *User) EnableVirtualMFADevice() error {
335+
u.Logger.Println("Enabling the virtual MFA device")
335336
if u.BaseProfile.MFASerial == "" {
336337
return fmt.Errorf("profile MFA serial must be set")
337338
}
338339

339-
mfaTokenPair := getMFATokenPair(logger)
340+
mfaTokenPair := getMFATokenPair(u.Logger)
340341

341342
sess, err := u.newSession()
342343
if err != nil {
@@ -360,11 +361,11 @@ func (u *User) EnableVirtualMFADevice(logger *log.Logger) error {
360361
}
361362

362363
// RotateAccessKeys rotates the user's AWS access key.
363-
func (u *User) RotateAccessKeys(logger *log.Logger) error {
364-
logger.Println("Rotating AWS access keys")
364+
func (u *User) RotateAccessKeys() error {
365+
u.Logger.Println("Rotating AWS access keys")
365366

366-
logger.Println("A new unique MFA token is needed to rotate the AWS access keys")
367-
sess, err := u.newMFASession(logger)
367+
u.Logger.Println("A new unique MFA token is needed to rotate the AWS access keys")
368+
sess, err := u.newMFASession()
368369
if err != nil {
369370
return fmt.Errorf("unable to get mfa session: %w", err)
370371
}
@@ -382,7 +383,7 @@ func (u *User) RotateAccessKeys(logger *log.Logger) error {
382383

383384
oldAccessKeyID := listAccessKeysOutput.AccessKeyMetadata[0].AccessKeyId
384385

385-
logger.Println("Creating new access key")
386+
u.Logger.Println("Creating new access key")
386387
newAccessKey, err := iamClient.CreateAccessKey(&iam.CreateAccessKeyInput{
387388
UserName: aws.String(u.Name),
388389
})
@@ -393,12 +394,12 @@ func (u *User) RotateAccessKeys(logger *log.Logger) error {
393394
u.AccessKeyID = *newAccessKey.AccessKey.AccessKeyId
394395
u.SecretAccessKey = *newAccessKey.AccessKey.SecretAccessKey
395396

396-
err = u.AddVaultProfile(logger)
397+
err = u.AddVaultProfile()
397398
if err != nil {
398399
return fmt.Errorf("unable to add new credentials to aws-vault profile: %w", err)
399400
}
400401

401-
logger.Println("Deleting old access key")
402+
u.Logger.Println("Deleting old access key")
402403
_, err = iamClient.DeleteAccessKey(&iam.DeleteAccessKeyInput{
403404
AccessKeyId: oldAccessKeyID,
404405
UserName: aws.String(u.Name),
@@ -413,7 +414,7 @@ func (u *User) RotateAccessKeys(logger *log.Logger) error {
413414

414415
// AddVaultProfile uses aws-vault to store AWS credentials for the user's
415416
// profile.
416-
func (u *User) AddVaultProfile(logger *log.Logger) error {
417+
func (u *User) AddVaultProfile() error {
417418
creds := credentials.Value{AccessKeyID: u.AccessKeyID, SecretAccessKey: u.SecretAccessKey}
418419
provider := &vault.KeyringProvider{Keyring: *u.Keyring, Profile: u.BaseProfile.Name}
419420

@@ -422,9 +423,9 @@ func (u *User) AddVaultProfile(logger *log.Logger) error {
422423
return fmt.Errorf("unable to store credentials: %w", err)
423424
}
424425

425-
logger.Printf("Added credentials to profile %q in vault", u.BaseProfile.Name)
426+
u.Logger.Printf("Added credentials to profile %q in vault", u.BaseProfile.Name)
426427

427-
err = deleteSession(u.BaseProfile.Name, u.Config, u.Keyring, logger)
428+
err = deleteSession(u.BaseProfile.Name, u.Config, u.Keyring, u.Logger)
428429
if err != nil {
429430
return fmt.Errorf("unable to delete session: %w", err)
430431
}
@@ -433,8 +434,8 @@ func (u *User) AddVaultProfile(logger *log.Logger) error {
433434
}
434435

435436
// UpdateAWSConfigFile adds the user's AWS profile to the AWS config file
436-
func (u *User) UpdateAWSConfigFile(logger *log.Logger) error {
437-
logger.Printf("Updating the AWS config file: %s", u.Config.Path)
437+
func (u *User) UpdateAWSConfigFile() error {
438+
u.Logger.Printf("Updating the AWS config file: %s", u.Config.Path)
438439
// load the ini file
439440
iniFile, err := ini.Load(u.Config.Path)
440441
if err != nil {
@@ -477,9 +478,9 @@ func (u *User) UpdateAWSConfigFile(logger *log.Logger) error {
477478
}
478479

479480
// RemoveVaultSession removes the aws-vault session for the profile.
480-
func (u *User) RemoveVaultSession(logger *log.Logger) error {
481-
logger.Printf("Removing aws-vault session")
482-
err := deleteSession(u.BaseProfile.Name, u.Config, u.Keyring, logger)
481+
func (u *User) RemoveVaultSession() error {
482+
u.Logger.Printf("Removing aws-vault session")
483+
err := deleteSession(u.BaseProfile.Name, u.Config, u.Keyring, u.Logger)
483484
if err != nil {
484485
return fmt.Errorf("unable to delete session: %w", err)
485486
}
@@ -668,6 +669,7 @@ func setupUserFunction(cmd *cobra.Command, args []string) error {
668669
logger.Fatal(err)
669670
}
670671
user := User{
672+
Logger: logger,
671673
Name: iamUser,
672674
BaseProfile: &baseProfile,
673675
RoleProfile: &roleProfile,
@@ -685,7 +687,7 @@ func setupUserFunction(cmd *cobra.Command, args []string) error {
685687
if err != nil {
686688
logger.Fatal(err)
687689
}
688-
user.Setup(logger)
690+
user.Setup()
689691

690692
// If we got this far, we win
691693
logger.Println("Victory!")

0 commit comments

Comments
 (0)