From ea52b6ec8be42ec28a5e862b9b1076912025c828 Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Fri, 4 Mar 2016 14:56:51 -0500 Subject: [PATCH 1/5] changed response of expiration manager's renewtoken to logical.response --- vault/expiration.go | 9 ++++++--- vault/token_store.go | 11 +---------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/vault/expiration.go b/vault/expiration.go index 3e06d2591f..ec55bf9f68 100644 --- a/vault/expiration.go +++ b/vault/expiration.go @@ -310,7 +310,7 @@ func (m *ExpirationManager) Renew(leaseID string, increment time.Duration) (*log // RenewToken is used to renew a token which does not need to // invoke a logical backend. func (m *ExpirationManager) RenewToken(req *logical.Request, source string, token string, - increment time.Duration) (*logical.Auth, error) { + increment time.Duration) (*logical.Response, error) { defer metrics.MeasureSince([]string{"expire", "renew-token"}, time.Now()) // Compute the Lease ID leaseID := path.Join(source, m.tokenStore.SaltID(token)) @@ -331,13 +331,16 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke if err != nil { return nil, err } + if resp.IsError() { + return resp, nil + } // Fast-path if there is no renewal if resp == nil { return nil, nil } if resp.Auth == nil || !resp.Auth.LeaseEnabled() { - return resp.Auth, nil + return resp, nil } // Attach the ClientToken @@ -354,7 +357,7 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke // Update the expiration time m.updatePending(le, resp.Auth.LeaseTotal()) - return resp.Auth, nil + return resp, nil } // Register is used to take a request and response with an associated diff --git a/vault/token_store.go b/vault/token_store.go index 0e8e5dcff9..b319e04a6e 100644 --- a/vault/token_store.go +++ b/vault/token_store.go @@ -895,16 +895,7 @@ func (ts *TokenStore) handleRenew( } // Renew the token and its children - auth, err := ts.expiration.RenewToken(req, te.Path, te.ID, increment) - if err != nil { - return logical.ErrorResponse(err.Error()), logical.ErrInvalidRequest - } - - // Generate the response - resp := &logical.Response{ - Auth: auth, - } - return resp, nil + return ts.expiration.RenewToken(req, te.Path, te.ID, increment) } func (ts *TokenStore) destroyCubbyhole(saltedID string) error { From 4f5f2a4376f55b58be77fee3734bb635415b92dd Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Fri, 4 Mar 2016 15:03:01 -0500 Subject: [PATCH 2/5] Fix testcase --- vault/expiration_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vault/expiration_test.go b/vault/expiration_test.go index e962947ae5..c086cd05e9 100644 --- a/vault/expiration_test.go +++ b/vault/expiration_test.go @@ -424,7 +424,7 @@ func TestExpiration_RenewToken(t *testing.T) { t.Fatalf("err: %v", err) } - if auth.ClientToken != out.ClientToken { + if auth.ClientToken != out.Auth.ClientToken { t.Fatalf("Bad: %#v", out) } } From a94a7a8c95817dd5bae626f2c3c6c707e3c4ecc6 Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Fri, 4 Mar 2016 15:13:04 -0500 Subject: [PATCH 3/5] Place the response nil check before resp.IsError() --- vault/expiration.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vault/expiration.go b/vault/expiration.go index ec55bf9f68..6f50112ddb 100644 --- a/vault/expiration.go +++ b/vault/expiration.go @@ -331,14 +331,15 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke if err != nil { return nil, err } + + if resp == nil { + return nil, nil + } + if resp.IsError() { return resp, nil } - // Fast-path if there is no renewal - if resp == nil { - return nil, nil - } if resp.Auth == nil || !resp.Auth.LeaseEnabled() { return resp, nil } From 295142846858255c6451b40e559468be716498b7 Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Fri, 4 Mar 2016 15:35:58 -0500 Subject: [PATCH 4/5] review rework --- vault/expiration.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/vault/expiration.go b/vault/expiration.go index 6f50112ddb..fad33c6c0c 100644 --- a/vault/expiration.go +++ b/vault/expiration.go @@ -337,11 +337,13 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke } if resp.IsError() { - return resp, nil + return &logical.Response{ + Data: resp.Data, + }, nil } if resp.Auth == nil || !resp.Auth.LeaseEnabled() { - return resp, nil + return &logical.Response{}, nil } // Attach the ClientToken @@ -358,7 +360,9 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke // Update the expiration time m.updatePending(le, resp.Auth.LeaseTotal()) - return resp, nil + return &logical.Response{ + Auth: resp.Auth, + }, nil } // Register is used to take a request and response with an associated From ee71f8198a17a050e960d5ae5db8d05474bda45f Mon Sep 17 00:00:00 2001 From: vishalnayak Date: Fri, 4 Mar 2016 18:08:13 -0500 Subject: [PATCH 5/5] review rework 2 --- vault/expiration.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vault/expiration.go b/vault/expiration.go index fad33c6c0c..cf27549021 100644 --- a/vault/expiration.go +++ b/vault/expiration.go @@ -343,7 +343,9 @@ func (m *ExpirationManager) RenewToken(req *logical.Request, source string, toke } if resp.Auth == nil || !resp.Auth.LeaseEnabled() { - return &logical.Response{}, nil + return &logical.Response{ + Auth: resp.Auth, + }, nil } // Attach the ClientToken