Skip to content

Commit

Permalink
vault: spec out expiration manager API
Browse files Browse the repository at this point in the history
  • Loading branch information
armon committed Mar 13, 2015
1 parent 279a1b1 commit 84e39d8
Showing 1 changed file with 34 additions and 5 deletions.
39 changes: 34 additions & 5 deletions vault/expiration.go
@@ -1,5 +1,7 @@
package vault

import "time"

const (
// expirationSubPath is the sub-path used for the expiration manager
// view. This is nested under the system view.
Expand All @@ -11,14 +13,16 @@ const (
// If a secret is not renewed in timely manner, it may be expired, and
// the ExpirationManager will handle doing automatic revocation.
type ExpirationManager struct {
view *BarrierView
router *Router
view *BarrierView
}

// NewExpirationManager creates a new ExpirationManager that is backed
// using a given view.
func NewExpirationManager(view *BarrierView) *ExpirationManager {
// using a given view, and uses the provided router for revocation.
func NewExpirationManager(router *Router, view *BarrierView) *ExpirationManager {
exp := &ExpirationManager{
view: view,
router: router,
view: view,
}
return exp
}
Expand All @@ -30,7 +34,32 @@ func (c *Core) setupExpiration() error {
view := c.systemView.SubView(expirationSubPath)

// Create the manager
mgr := NewExpirationManager(view)
mgr := NewExpirationManager(c.router, view)
c.expiration = mgr
return nil
}

// Revoke is used to revoke a secret named by the given vaultID
func (m *ExpirationManager) Revoke(vaultID string) error {
return nil
}

// RevokePrefix is used to revoke all secrets with a given prefix.
// The prefix maps to that of the mount table to make this simpler
// to reason about.
func (m *ExpirationManager) RevokePrefix(prefix string) error {
return nil
}

// Renew is used to renew a secret using the given vaultID
// and a renew interval. The increment may be ignored.
func (m *ExpirationManager) Renew(vaultID string, increment time.Duration) (*Lease, error) {
return nil, nil
}

// Register is used to take a request and response with an associated
// lease. The secret gets assigned a vaultId and the management of
// of lease is assumed by the expiration manager.
func (m *ExpirationManager) Register(req *Request, resp *Response) (string, error) {
return "", nil
}

0 comments on commit 84e39d8

Please sign in to comment.