Move to "github.com/hashicorp/go-hclog" (#4227)
* logbridge with hclog and identical output * Initial search & replace This compiles, but there is a fair amount of TODO and commented out code, especially around the plugin logclient/logserver code. * strip logbridge * fix majority of tests * update logxi aliases * WIP fixing tests * more test fixes * Update test to hclog * Fix format * Rename hclog -> log * WIP making hclog and logxi love each other * update logger_test.go * clean up merged comments * Replace RawLogger interface with a Logger * Add some logger names * Replace Trace with Debug * update builtin logical logging patterns * Fix build errors * More log updates * update log approach in command and builtin * More log updates * update helper, http, and logical directories * Update loggers * Log updates * Update logging * Update logging * Update logging * Update logging * update logging in physical * prefixing and lowercase * Update logging * Move phyisical logging name to server command * Fix som tests * address jims feedback so far * incorporate brians feedback so far * strip comments * move vault.go to logging package * update Debug to Trace * Update go-plugin deps * Update logging based on review comments * Updates from review * Unvendor logxi * Remove null_logger.go
This commit is contained in:
parent
3f5d60b54b
commit
03cf302e9a
|
@ -18,10 +18,11 @@ import (
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
auditFile "github.com/hashicorp/vault/builtin/audit/file"
|
auditFile "github.com/hashicorp/vault/builtin/audit/file"
|
||||||
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
|
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v3"
|
dockertest "gopkg.in/ory-am/dockertest.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ func testVaultServerUnseal(t testing.TB) (*api.Client, []string, func()) {
|
||||||
return testVaultServerCoreConfig(t, &vault.CoreConfig{
|
return testVaultServerCoreConfig(t, &vault.CoreConfig{
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
DisableCache: true,
|
DisableCache: true,
|
||||||
Logger: logxi.NullLog,
|
Logger: log.NewNullLogger(),
|
||||||
CredentialBackends: map[string]logical.Factory{
|
CredentialBackends: map[string]logical.Factory{
|
||||||
"userpass": credUserpass.Factory,
|
"userpass": credUserpass.Factory,
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,9 +21,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
|
|
||||||
|
@ -159,7 +158,7 @@ func TestBackend_PermittedDNSDomainsIntermediateCA(t *testing.T) {
|
||||||
coreConfig := &vault.CoreConfig{
|
coreConfig := &vault.CoreConfig{
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
DisableCache: true,
|
DisableCache: true,
|
||||||
Logger: logxi.NullLog,
|
Logger: log.NewNullLogger(),
|
||||||
CredentialBackends: map[string]logical.Factory{
|
CredentialBackends: map[string]logical.Factory{
|
||||||
"cert": Factory,
|
"cert": Factory,
|
||||||
},
|
},
|
||||||
|
|
|
@ -337,7 +337,7 @@ func (b *backend) loadTrustedCerts(ctx context.Context, storage logical.Storage,
|
||||||
trustedNonCAs = make([]*ParsedCert, 0)
|
trustedNonCAs = make([]*ParsedCert, 0)
|
||||||
names, err := storage.List(ctx, "cert/")
|
names, err := storage.List(ctx, "cert/")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Logger().Error("cert: failed to list trusted certs", "error", err)
|
b.Logger().Error("failed to list trusted certs", "error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, name := range names {
|
for _, name := range names {
|
||||||
|
@ -347,12 +347,12 @@ func (b *backend) loadTrustedCerts(ctx context.Context, storage logical.Storage,
|
||||||
}
|
}
|
||||||
entry, err := b.Cert(ctx, storage, strings.TrimPrefix(name, "cert/"))
|
entry, err := b.Cert(ctx, storage, strings.TrimPrefix(name, "cert/"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Logger().Error("cert: failed to load trusted cert", "name", name, "error", err)
|
b.Logger().Error("failed to load trusted cert", "name", name, "error", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
parsed := parsePEM([]byte(entry.Certificate))
|
parsed := parsePEM([]byte(entry.Certificate))
|
||||||
if len(parsed) == 0 {
|
if len(parsed) == 0 {
|
||||||
b.Logger().Error("cert: failed to parse certificate", "name", name)
|
b.Logger().Error("failed to parse certificate", "name", name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !parsed[0].IsCA {
|
if !parsed[0].IsCA {
|
||||||
|
|
|
@ -121,7 +121,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: User BindDN fetched", "username", username, "binddn", userBindDN)
|
b.Logger().Debug("user binddn fetched", "username", username, "binddn", userBindDN)
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.DenyNullBind && len(password) == 0 {
|
if cfg.DenyNullBind && len(password) == 0 {
|
||||||
|
@ -145,7 +145,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
return nil, logical.ErrorResponse(fmt.Sprintf("Encountered an error while attempting to re-bind with the BindDN User: %s", err.Error())), nil, nil
|
return nil, logical.ErrorResponse(fmt.Sprintf("Encountered an error while attempting to re-bind with the BindDN User: %s", err.Error())), nil, nil
|
||||||
}
|
}
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Re-Bound to original BindDN")
|
b.Logger().Debug("re-bound to original binddn")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
return nil, logical.ErrorResponse(err.Error()), nil, nil
|
return nil, logical.ErrorResponse(err.Error()), nil, nil
|
||||||
}
|
}
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Groups fetched from server", "num_server_groups", len(ldapGroups), "server_groups", ldapGroups)
|
b.Logger().Debug("groups fetched from server", "num_server_groups", len(ldapGroups), "server_groups", ldapGroups)
|
||||||
}
|
}
|
||||||
|
|
||||||
ldapResponse := &logical.Response{
|
ldapResponse := &logical.Response{
|
||||||
|
@ -177,7 +177,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
user, err := b.User(ctx, req.Storage, username)
|
user, err := b.User(ctx, req.Storage, username)
|
||||||
if err == nil && user != nil && user.Groups != nil {
|
if err == nil && user != nil && user.Groups != nil {
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
|
b.Logger().Debug("adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
|
||||||
}
|
}
|
||||||
allGroups = append(allGroups, user.Groups...)
|
allGroups = append(allGroups, user.Groups...)
|
||||||
}
|
}
|
||||||
|
@ -260,7 +260,7 @@ func (b *backend) getUserBindDN(cfg *ConfigEntry, c *ldap.Conn, username string)
|
||||||
|
|
||||||
filter := fmt.Sprintf("(%s=%s)", cfg.UserAttr, ldap.EscapeFilter(username))
|
filter := fmt.Sprintf("(%s=%s)", cfg.UserAttr, ldap.EscapeFilter(username))
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Discovering user", "userdn", cfg.UserDN, "filter", filter)
|
b.Logger().Debug("discovering user", "userdn", cfg.UserDN, "filter", filter)
|
||||||
}
|
}
|
||||||
result, err := c.Search(&ldap.SearchRequest{
|
result, err := c.Search(&ldap.SearchRequest{
|
||||||
BaseDN: cfg.UserDN,
|
BaseDN: cfg.UserDN,
|
||||||
|
@ -295,7 +295,7 @@ func (b *backend) getUserDN(cfg *ConfigEntry, c *ldap.Conn, bindDN string) (stri
|
||||||
// Find the distinguished name for the user if userPrincipalName used for login
|
// Find the distinguished name for the user if userPrincipalName used for login
|
||||||
filter := fmt.Sprintf("(userPrincipalName=%s)", ldap.EscapeFilter(bindDN))
|
filter := fmt.Sprintf("(userPrincipalName=%s)", ldap.EscapeFilter(bindDN))
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Searching UPN", "userdn", cfg.UserDN, "filter", filter)
|
b.Logger().Debug("searching upn", "userdn", cfg.UserDN, "filter", filter)
|
||||||
}
|
}
|
||||||
result, err := c.Search(&ldap.SearchRequest{
|
result, err := c.Search(&ldap.SearchRequest{
|
||||||
BaseDN: cfg.UserDN,
|
BaseDN: cfg.UserDN,
|
||||||
|
@ -339,19 +339,19 @@ func (b *backend) getLdapGroups(cfg *ConfigEntry, c *ldap.Conn, userDN string, u
|
||||||
ldapMap := make(map[string]bool)
|
ldapMap := make(map[string]bool)
|
||||||
|
|
||||||
if cfg.GroupFilter == "" {
|
if cfg.GroupFilter == "" {
|
||||||
b.Logger().Warn("auth/ldap: GroupFilter is empty, will not query server")
|
b.Logger().Warn("groupfilter is empty, will not query server")
|
||||||
return make([]string, 0), nil
|
return make([]string, 0), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.GroupDN == "" {
|
if cfg.GroupDN == "" {
|
||||||
b.Logger().Warn("auth/ldap: GroupDN is empty, will not query server")
|
b.Logger().Warn("groupdn is empty, will not query server")
|
||||||
return make([]string, 0), nil
|
return make([]string, 0), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// If groupfilter was defined, resolve it as a Go template and use the query for
|
// If groupfilter was defined, resolve it as a Go template and use the query for
|
||||||
// returning the user's groups
|
// returning the user's groups
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Compiling group filter", "group_filter", cfg.GroupFilter)
|
b.Logger().Debug("compiling group filter", "group_filter", cfg.GroupFilter)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the configuration as a template.
|
// Parse the configuration as a template.
|
||||||
|
@ -374,7 +374,7 @@ func (b *backend) getLdapGroups(cfg *ConfigEntry, c *ldap.Conn, userDN string, u
|
||||||
t.Execute(&renderedQuery, context)
|
t.Execute(&renderedQuery, context)
|
||||||
|
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/ldap: Searching", "groupdn", cfg.GroupDN, "rendered_query", renderedQuery.String())
|
b.Logger().Debug("searching", "groupdn", cfg.GroupDN, "rendered_query", renderedQuery.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := c.Search(&ldap.SearchRequest{
|
result, err := c.Search(&ldap.SearchRequest{
|
||||||
|
|
|
@ -12,11 +12,11 @@ import (
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
"github.com/go-ldap/ldap"
|
"github.com/go-ldap/ldap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
multierror "github.com/hashicorp/go-multierror"
|
multierror "github.com/hashicorp/go-multierror"
|
||||||
"github.com/hashicorp/vault/helper/tlsutil"
|
"github.com/hashicorp/vault/helper/tlsutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func pathConfig(b *backend) *framework.Path {
|
func pathConfig(b *backend) *framework.Path {
|
||||||
|
@ -427,7 +427,7 @@ func (c *ConfigEntry) DialLDAP() (*ldap.Conn, error) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if retErr != nil {
|
if retErr != nil {
|
||||||
if c.logger.IsDebug() {
|
if c.logger.IsDebug() {
|
||||||
c.logger.Debug("ldap: errors connecting to some hosts: %s", retErr.Error())
|
c.logger.Debug("errors connecting to some hosts: %s", retErr.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
retErr = nil
|
retErr = nil
|
||||||
|
|
|
@ -115,13 +115,13 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
switch result.Status {
|
switch result.Status {
|
||||||
case "LOCKED_OUT":
|
case "LOCKED_OUT":
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: user is locked out", "user", username)
|
b.Logger().Debug("user is locked out", "user", username)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
||||||
|
|
||||||
case "PASSWORD_EXPIRED":
|
case "PASSWORD_EXPIRED":
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: password is expired", "user", username)
|
b.Logger().Debug("password is expired", "user", username)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
case "MFA_ENROLL", "MFA_ENROLL_ACTIVATE":
|
case "MFA_ENROLL", "MFA_ENROLL_ACTIVATE":
|
||||||
if !cfg.BypassOktaMFA {
|
if !cfg.BypassOktaMFA {
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: user must enroll or complete mfa enrollment", "user", username)
|
b.Logger().Debug("user must enroll or complete mfa enrollment", "user", username)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed: you must complete MFA enrollment to continue"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed: you must complete MFA enrollment to continue"), nil, nil
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
// Allowed
|
// Allowed
|
||||||
default:
|
default:
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: unhandled result status", "status", result.Status, "factorstatus", result.FactorResult)
|
b.Logger().Debug("unhandled result status", "status", result.Status, "factorstatus", result.FactorResult)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: unhandled result status", "status", result.Status)
|
b.Logger().Debug("unhandled result status", "status", result.Status)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
// Allowed
|
// Allowed
|
||||||
default:
|
default:
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: authentication returned a non-success status", "status", result.Status)
|
b.Logger().Debug("authentication returned a non-success status", "status", result.Status)
|
||||||
}
|
}
|
||||||
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
return nil, logical.ErrorResponse("okta authentication failed"), nil, nil
|
||||||
}
|
}
|
||||||
|
@ -254,12 +254,12 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
user, err := b.User(ctx, req.Storage, username)
|
user, err := b.User(ctx, req.Storage, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: error looking up user", "error", err)
|
b.Logger().Debug("error looking up user", "error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil && user != nil && user.Groups != nil {
|
if err == nil && user != nil && user.Groups != nil {
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
|
b.Logger().Debug("adding local groups", "num_local_groups", len(user.Groups), "local_groups", user.Groups)
|
||||||
}
|
}
|
||||||
allGroups = append(allGroups, user.Groups...)
|
allGroups = append(allGroups, user.Groups...)
|
||||||
}
|
}
|
||||||
|
@ -270,7 +270,7 @@ func (b *backend) Login(ctx context.Context, req *logical.Request, username stri
|
||||||
entry, _, err := b.Group(ctx, req.Storage, groupName)
|
entry, _, err := b.Group(ctx, req.Storage, groupName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: error looking up group policies", "error", err)
|
b.Logger().Debug("error looking up group policies", "error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil && entry != nil && entry.Policies != nil {
|
if err == nil && entry != nil && entry.Policies != nil {
|
||||||
|
@ -309,7 +309,7 @@ func (b *backend) getOktaGroups(client *okta.Client, user *okta.User) ([]string,
|
||||||
oktaGroups = append(oktaGroups, group.Profile.Name)
|
oktaGroups = append(oktaGroups, group.Profile.Name)
|
||||||
}
|
}
|
||||||
if b.Logger().IsDebug() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Debug("auth/okta: Groups fetched from Okta", "num_groups", len(oktaGroups), "groups", fmt.Sprintf("%#v", oktaGroups))
|
b.Logger().Debug("Groups fetched from Okta", "num_groups", len(oktaGroups), "groups", fmt.Sprintf("%#v", oktaGroups))
|
||||||
}
|
}
|
||||||
return oktaGroups, nil
|
return oktaGroups, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,9 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/helper/policyutil"
|
"github.com/hashicorp/vault/helper/policyutil"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ func TestBackend_Config(t *testing.T) {
|
||||||
defaultLeaseTTLVal := time.Hour * 12
|
defaultLeaseTTLVal := time.Hour * 12
|
||||||
maxLeaseTTLVal := time.Hour * 24
|
maxLeaseTTLVal := time.Hour * 24
|
||||||
b, err := Factory(context.Background(), &logical.BackendConfig{
|
b, err := Factory(context.Background(), &logical.BackendConfig{
|
||||||
Logger: logformat.NewVaultLogger(log.LevelTrace),
|
Logger: logging.NewVaultLogger(log.Trace),
|
||||||
System: &logical.StaticSystemView{
|
System: &logical.StaticSystemView{
|
||||||
DefaultLeaseTTLVal: defaultLeaseTTLVal,
|
DefaultLeaseTTLVal: defaultLeaseTTLVal,
|
||||||
MaxLeaseTTLVal: maxLeaseTTLVal,
|
MaxLeaseTTLVal: maxLeaseTTLVal,
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
uuid "github.com/hashicorp/go-uuid"
|
uuid "github.com/hashicorp/go-uuid"
|
||||||
|
|
|
@ -5,9 +5,9 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// DatabasePluginClient embeds a databasePluginRPCClient and wraps it's Close
|
// DatabasePluginClient embeds a databasePluginRPCClient and wraps it's Close
|
||||||
|
@ -61,7 +61,7 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
|
||||||
case *gRPCClient:
|
case *gRPCClient:
|
||||||
db = raw.(*gRPCClient)
|
db = raw.(*gRPCClient)
|
||||||
case *databasePluginRPCClient:
|
case *databasePluginRPCClient:
|
||||||
logger.Warn("database: plugin is using deprecated net RPC transport, recompile plugin to upgrade to gRPC", "plugin", pluginRunner.Name)
|
logger.Warn("plugin is using deprecated net RPC transport, recompile plugin to upgrade to gRPC", "plugin", pluginRunner.Name)
|
||||||
db = raw.(*databasePluginRPCClient)
|
db = raw.(*databasePluginRPCClient)
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("unsupported client type")
|
return nil, errors.New("unsupported client type")
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
|
||||||
metrics "github.com/armon/go-metrics"
|
metrics "github.com/armon/go-metrics"
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ---- Tracing Middleware Domain ----
|
// ---- Tracing Middleware Domain ----
|
||||||
|
@ -21,9 +21,6 @@ import (
|
||||||
type databaseTracingMiddleware struct {
|
type databaseTracingMiddleware struct {
|
||||||
next Database
|
next Database
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
|
|
||||||
typeStr string
|
|
||||||
transport string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) Type() (string, error) {
|
func (mw *databaseTracingMiddleware) Type() (string, error) {
|
||||||
|
@ -32,37 +29,37 @@ func (mw *databaseTracingMiddleware) Type() (string, error) {
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) CreateUser(ctx context.Context, statements Statements, usernameConfig UsernameConfig, expiration time.Time) (username string, password string, err error) {
|
func (mw *databaseTracingMiddleware) CreateUser(ctx context.Context, statements Statements, usernameConfig UsernameConfig, expiration time.Time) (username string, password string, err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "CreateUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then))
|
mw.logger.Trace("create user", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "CreateUser", "status", "started", "type", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("create user", "status", "started")
|
||||||
return mw.next.CreateUser(ctx, statements, usernameConfig, expiration)
|
return mw.next.CreateUser(ctx, statements, usernameConfig, expiration)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) RenewUser(ctx context.Context, statements Statements, username string, expiration time.Time) (err error) {
|
func (mw *databaseTracingMiddleware) RenewUser(ctx context.Context, statements Statements, username string, expiration time.Time) (err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "RenewUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then))
|
mw.logger.Trace("renew user", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "RenewUser", "status", "started", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("renew user", "status", "started")
|
||||||
return mw.next.RenewUser(ctx, statements, username, expiration)
|
return mw.next.RenewUser(ctx, statements, username, expiration)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) RevokeUser(ctx context.Context, statements Statements, username string) (err error) {
|
func (mw *databaseTracingMiddleware) RevokeUser(ctx context.Context, statements Statements, username string) (err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "RevokeUser", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then))
|
mw.logger.Trace("revoke user", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "RevokeUser", "status", "started", "type", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("revoke user", "status", "started")
|
||||||
return mw.next.RevokeUser(ctx, statements, username)
|
return mw.next.RevokeUser(ctx, statements, username)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) RotateRootCredentials(ctx context.Context, statements []string) (conf map[string]interface{}, err error) {
|
func (mw *databaseTracingMiddleware) RotateRootCredentials(ctx context.Context, statements []string) (conf map[string]interface{}, err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "RotateRootCredentials", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then))
|
mw.logger.Trace("rotate root credentials", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "RotateRootCredentials", "status", "started", "type", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("rotate root credentials", "status", "started")
|
||||||
return mw.next.RotateRootCredentials(ctx, statements)
|
return mw.next.RotateRootCredentials(ctx, statements)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,19 +70,19 @@ func (mw *databaseTracingMiddleware) Initialize(ctx context.Context, conf map[st
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) Init(ctx context.Context, conf map[string]interface{}, verifyConnection bool) (saveConf map[string]interface{}, err error) {
|
func (mw *databaseTracingMiddleware) Init(ctx context.Context, conf map[string]interface{}, verifyConnection bool) (saveConf map[string]interface{}, err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "Initialize", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "verify", verifyConnection, "err", err, "took", time.Since(then))
|
mw.logger.Trace("initialize", "status", "finished", "verify", verifyConnection, "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "Initialize", "status", "started", "type", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("initialize", "status", "started")
|
||||||
return mw.next.Init(ctx, conf, verifyConnection)
|
return mw.next.Init(ctx, conf, verifyConnection)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mw *databaseTracingMiddleware) Close() (err error) {
|
func (mw *databaseTracingMiddleware) Close() (err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
mw.logger.Trace("database", "operation", "Close", "status", "finished", "type", mw.typeStr, "transport", mw.transport, "err", err, "took", time.Since(then))
|
mw.logger.Trace("close", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
mw.logger.Trace("database", "operation", "Close", "status", "started", "type", mw.typeStr, "transport", mw.transport)
|
mw.logger.Trace("close", "status", "started")
|
||||||
return mw.next.Close()
|
return mw.next.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ import (
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Database is the interface that all database objects must implement.
|
// Database is the interface that all database objects must implement.
|
||||||
|
@ -39,6 +39,8 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namedLogger := logger.Named(pluginName)
|
||||||
|
|
||||||
var transport string
|
var transport string
|
||||||
var db Database
|
var db Database
|
||||||
if pluginRunner.Builtin {
|
if pluginRunner.Builtin {
|
||||||
|
@ -59,7 +61,7 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// create a DatabasePluginClient instance
|
// create a DatabasePluginClient instance
|
||||||
db, err = newPluginClient(ctx, sys, pluginRunner, logger)
|
db, err = newPluginClient(ctx, sys, pluginRunner, namedLogger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -87,12 +89,10 @@ func PluginFactory(ctx context.Context, pluginName string, sys pluginutil.LookRu
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrap with tracing middleware
|
// Wrap with tracing middleware
|
||||||
if logger.IsTrace() {
|
if namedLogger.IsTrace() {
|
||||||
db = &databaseTracingMiddleware{
|
db = &databaseTracingMiddleware{
|
||||||
transport: transport,
|
|
||||||
next: db,
|
next: db,
|
||||||
typeStr: typeStr,
|
logger: namedLogger.With("transport", transport),
|
||||||
logger: logger,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
plugin "github.com/hashicorp/go-plugin"
|
plugin "github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/builtin/logical/database/dbplugin"
|
"github.com/hashicorp/vault/builtin/logical/database/dbplugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
|
@ -14,7 +15,6 @@ import (
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/plugins"
|
"github.com/hashicorp/vault/plugins"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type mockPlugin struct {
|
type mockPlugin struct {
|
||||||
|
@ -147,7 +147,7 @@ func TestPlugin_Init(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{})
|
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ func TestPlugin_CreateUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func TestPlugin_RenewUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -245,7 +245,7 @@ func TestPlugin_RevokeUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -287,7 +287,7 @@ func TestPlugin_NetRPC_Init(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{})
|
dbRaw, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -311,7 +311,7 @@ func TestPlugin_NetRPC_CreateUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,7 @@ func TestPlugin_NetRPC_RenewUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -385,7 +385,7 @@ func TestPlugin_NetRPC_RevokeUser(t *testing.T) {
|
||||||
cluster, sys := getCluster(t)
|
cluster, sys := getCluster(t)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, &log.NullLogger{})
|
db, err := dbplugin.PluginFactory(context.Background(), "test-plugin-netRPC", sys, log.NewNullLogger())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/framework"
|
"github.com/hashicorp/vault/logical/framework"
|
||||||
|
@ -64,8 +64,8 @@ type backend struct {
|
||||||
|
|
||||||
// DB returns the database connection.
|
// DB returns the database connection.
|
||||||
func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) {
|
func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) {
|
||||||
b.logger.Trace("postgres/db: enter")
|
b.logger.Debug("postgres/db: enter")
|
||||||
defer b.logger.Trace("postgres/db: exit")
|
defer b.logger.Debug("postgres/db: exit")
|
||||||
|
|
||||||
b.lock.Lock()
|
b.lock.Lock()
|
||||||
defer b.lock.Unlock()
|
defer b.lock.Unlock()
|
||||||
|
@ -126,8 +126,8 @@ func (b *backend) DB(ctx context.Context, s logical.Storage) (*sql.DB, error) {
|
||||||
|
|
||||||
// ResetDB forces a connection next time DB() is called.
|
// ResetDB forces a connection next time DB() is called.
|
||||||
func (b *backend) ResetDB(_ context.Context) {
|
func (b *backend) ResetDB(_ context.Context) {
|
||||||
b.logger.Trace("postgres/resetdb: enter")
|
b.logger.Debug("postgres/db: enter")
|
||||||
defer b.logger.Trace("postgres/resetdb: exit")
|
defer b.logger.Debug("postgres/db: exit")
|
||||||
|
|
||||||
b.lock.Lock()
|
b.lock.Lock()
|
||||||
defer b.lock.Unlock()
|
defer b.lock.Unlock()
|
||||||
|
|
|
@ -33,13 +33,9 @@ func pathRoleCreate(b *backend) *framework.Path {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
|
func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: enter")
|
|
||||||
defer b.logger.Trace("postgres/pathRoleCreateRead: exit")
|
|
||||||
|
|
||||||
name := data.Get("name").(string)
|
name := data.Get("name").(string)
|
||||||
|
|
||||||
// Get the role
|
// Get the role
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: getting role")
|
|
||||||
role, err := b.Role(ctx, req.Storage, name)
|
role, err := b.Role(ctx, req.Storage, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -49,7 +45,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine if we have a lease
|
// Determine if we have a lease
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: getting lease")
|
|
||||||
lease, err := b.Lease(ctx, req.Storage)
|
lease, err := b.Lease(ctx, req.Storage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -90,20 +85,17 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
|
||||||
Format("2006-01-02 15:04:05-0700")
|
Format("2006-01-02 15:04:05-0700")
|
||||||
|
|
||||||
// Get our handle
|
// Get our handle
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: getting database handle")
|
|
||||||
db, err := b.DB(ctx, req.Storage)
|
db, err := b.DB(ctx, req.Storage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start a transaction
|
// Start a transaction
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: starting transaction")
|
|
||||||
tx, err := db.Begin()
|
tx, err := db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: rolling back transaction")
|
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -114,7 +106,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: preparing statement")
|
|
||||||
stmt, err := tx.Prepare(Query(query, map[string]string{
|
stmt, err := tx.Prepare(Query(query, map[string]string{
|
||||||
"name": username,
|
"name": username,
|
||||||
"password": password,
|
"password": password,
|
||||||
|
@ -124,7 +115,6 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer stmt.Close()
|
defer stmt.Close()
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: executing statement")
|
|
||||||
if _, err := stmt.Exec(); err != nil {
|
if _, err := stmt.Exec(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -132,14 +122,12 @@ func (b *backend) pathRoleCreateRead(ctx context.Context, req *logical.Request,
|
||||||
|
|
||||||
// Commit the transaction
|
// Commit the transaction
|
||||||
|
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: committing transaction")
|
|
||||||
if err := tx.Commit(); err != nil {
|
if err := tx.Commit(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the secret
|
// Return the secret
|
||||||
|
|
||||||
b.logger.Trace("postgres/pathRoleCreateRead: generating secret")
|
|
||||||
resp := b.Secret(SecretCredsType).Response(map[string]interface{}{
|
resp := b.Secret(SecretCredsType).Response(map[string]interface{}{
|
||||||
"username": username,
|
"username": username,
|
||||||
"password": password,
|
"password": password,
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
"golang.org/x/crypto/ssh/agent"
|
"golang.org/x/crypto/ssh/agent"
|
||||||
|
|
|
@ -571,14 +571,14 @@ func (b *backend) pathRoleList(ctx context.Context, req *logical.Request, d *fra
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// On error, log warning and continue
|
// On error, log warning and continue
|
||||||
if b.Logger().IsWarn() {
|
if b.Logger().IsWarn() {
|
||||||
b.Logger().Warn("ssh: error getting role info", "role", entry, "error", err)
|
b.Logger().Warn("error getting role info", "role", entry, "error", err)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if role == nil {
|
if role == nil {
|
||||||
// On empty role, log warning and continue
|
// On empty role, log warning and continue
|
||||||
if b.Logger().IsWarn() {
|
if b.Logger().IsWarn() {
|
||||||
b.Logger().Warn("ssh: no role info found", "role", entry)
|
b.Logger().Warn("no role info found", "role", entry)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -586,7 +586,7 @@ func (b *backend) pathRoleList(ctx context.Context, req *logical.Request, d *fra
|
||||||
roleInfo, err := b.parseRole(role)
|
roleInfo, err := b.parseRole(role)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if b.Logger().IsWarn() {
|
if b.Logger().IsWarn() {
|
||||||
b.Logger().Warn("ssh: error parsing role info", "role", entry, "error", err)
|
b.Logger().Warn("error parsing role info", "role", entry, "error", err)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
|
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -64,8 +64,8 @@ type backend struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backend) invalidate(_ context.Context, key string) {
|
func (b *backend) invalidate(_ context.Context, key string) {
|
||||||
if b.Logger().IsTrace() {
|
if b.Logger().IsDebug() {
|
||||||
b.Logger().Trace("transit: invalidating key", "key", key)
|
b.Logger().Debug("invalidating key", "key", key)
|
||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(key, "policy/"):
|
case strings.HasPrefix(key, "policy/"):
|
||||||
|
|
|
@ -86,7 +86,7 @@ type backend struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backend) reloadBackend(ctx context.Context) error {
|
func (b *backend) reloadBackend(ctx context.Context) error {
|
||||||
b.Logger().Trace("plugin: reloading plugin backend", "plugin", b.config.Config["plugin_name"])
|
b.Logger().Debug("reloading plugin backend", "plugin", b.config.Config["plugin_name"])
|
||||||
return b.startBackend(ctx)
|
return b.startBackend(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,12 +111,12 @@ func (b *backend) startBackend(ctx context.Context) error {
|
||||||
if !b.loaded {
|
if !b.loaded {
|
||||||
if b.Backend.Type() != nb.Type() {
|
if b.Backend.Type() != nb.Type() {
|
||||||
nb.Cleanup(ctx)
|
nb.Cleanup(ctx)
|
||||||
b.Logger().Warn("plugin: failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchType)
|
b.Logger().Warn("failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchType)
|
||||||
return ErrMismatchType
|
return ErrMismatchType
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(b.Backend.SpecialPaths(), nb.SpecialPaths()) {
|
if !reflect.DeepEqual(b.Backend.SpecialPaths(), nb.SpecialPaths()) {
|
||||||
nb.Cleanup(ctx)
|
nb.Cleanup(ctx)
|
||||||
b.Logger().Warn("plugin: failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchPaths)
|
b.Logger().Warn("failed to start plugin process", "plugin", b.config.Config["plugin_name"], "error", ErrMismatchPaths)
|
||||||
return ErrMismatchPaths
|
return ErrMismatchPaths
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,14 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin"
|
"github.com/hashicorp/vault/logical/plugin"
|
||||||
"github.com/hashicorp/vault/logical/plugin/mock"
|
"github.com/hashicorp/vault/logical/plugin/mock"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBackend_impl(t *testing.T) {
|
func TestBackend_impl(t *testing.T) {
|
||||||
|
@ -80,7 +80,7 @@ func testConfig(t *testing.T) (*logical.BackendConfig, func()) {
|
||||||
sys := vault.TestDynamicSystemView(core.Core)
|
sys := vault.TestDynamicSystemView(core.Core)
|
||||||
|
|
||||||
config := &logical.BackendConfig{
|
config := &logical.BackendConfig{
|
||||||
Logger: logformat.NewVaultLogger(log.LevelTrace),
|
Logger: logging.NewVaultLogger(log.Debug),
|
||||||
System: sys,
|
System: sys,
|
||||||
Config: map[string]string{
|
Config: map[string]string{
|
||||||
"plugin_name": "mock-plugin",
|
"plugin_name": "mock-plugin",
|
||||||
|
|
|
@ -4,12 +4,12 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
credAppRole "github.com/hashicorp/vault/builtin/credential/approle"
|
credAppRole "github.com/hashicorp/vault/builtin/credential/approle"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAppRole_Integ_ConcurrentLogins(t *testing.T) {
|
func TestAppRole_Integ_ConcurrentLogins(t *testing.T) {
|
||||||
|
@ -17,7 +17,7 @@ func TestAppRole_Integ_ConcurrentLogins(t *testing.T) {
|
||||||
coreConfig := &vault.CoreConfig{
|
coreConfig := &vault.CoreConfig{
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
DisableCache: true,
|
DisableCache: true,
|
||||||
Logger: logxi.NullLog,
|
Logger: log.NewNullLogger(),
|
||||||
CredentialBackends: map[string]logical.Factory{
|
CredentialBackends: map[string]logical.Factory{
|
||||||
"approle": credAppRole.Factory,
|
"approle": credAppRole.Factory,
|
||||||
},
|
},
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
"github.com/hashicorp/vault/audit"
|
"github.com/hashicorp/vault/audit"
|
||||||
"github.com/hashicorp/vault/builtin/logical/pki"
|
"github.com/hashicorp/vault/builtin/logical/pki"
|
||||||
|
@ -22,11 +23,10 @@ import (
|
||||||
auditFile "github.com/hashicorp/vault/builtin/audit/file"
|
auditFile "github.com/hashicorp/vault/builtin/audit/file"
|
||||||
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
|
credUserpass "github.com/hashicorp/vault/builtin/credential/userpass"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
defaultVaultLogger = logxi.NullLog
|
defaultVaultLogger = log.NewNullLogger()
|
||||||
|
|
||||||
defaultVaultCredentialBackends = map[string]logical.Factory{
|
defaultVaultCredentialBackends = map[string]logical.Factory{
|
||||||
"userpass": credUserpass.Factory,
|
"userpass": credUserpass.Factory,
|
||||||
|
|
|
@ -3,12 +3,12 @@ package command
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
"github.com/hashicorp/vault/builtin/credential/ldap"
|
"github.com/hashicorp/vault/builtin/credential/ldap"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIdentityStore_Integ_GroupAliases(t *testing.T) {
|
func TestIdentityStore_Integ_GroupAliases(t *testing.T) {
|
||||||
|
@ -16,7 +16,7 @@ func TestIdentityStore_Integ_GroupAliases(t *testing.T) {
|
||||||
coreConfig := &vault.CoreConfig{
|
coreConfig := &vault.CoreConfig{
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
DisableCache: true,
|
DisableCache: true,
|
||||||
Logger: logxi.NullLog,
|
Logger: log.NewNullLogger(),
|
||||||
CredentialBackends: map[string]logical.Factory{
|
CredentialBackends: map[string]logical.Factory{
|
||||||
"ldap": ldap.Factory,
|
"ldap": ldap.Factory,
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,11 +3,11 @@ package command
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
vaulthttp "github.com/hashicorp/vault/http"
|
vaulthttp "github.com/hashicorp/vault/http"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
logxi "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
credAppId "github.com/hashicorp/vault/builtin/credential/app-id"
|
credAppId "github.com/hashicorp/vault/builtin/credential/app-id"
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ func TestPathMap_Upgrade_API(t *testing.T) {
|
||||||
coreConfig := &vault.CoreConfig{
|
coreConfig := &vault.CoreConfig{
|
||||||
DisableMlock: true,
|
DisableMlock: true,
|
||||||
DisableCache: true,
|
DisableCache: true,
|
||||||
Logger: logxi.NullLog,
|
Logger: log.NewNullLogger(),
|
||||||
CredentialBackends: map[string]logical.Factory{
|
CredentialBackends: map[string]logical.Factory{
|
||||||
"app-id": credAppId.Factory,
|
"app-id": credAppId.Factory,
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
colorable "github.com/mattn/go-colorable"
|
colorable "github.com/mattn/go-colorable"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
testing "github.com/mitchellh/go-testing-interface"
|
testing "github.com/mitchellh/go-testing-interface"
|
||||||
"github.com/posener/complete"
|
"github.com/posener/complete"
|
||||||
|
@ -32,13 +31,12 @@ import (
|
||||||
"github.com/armon/go-metrics/circonus"
|
"github.com/armon/go-metrics/circonus"
|
||||||
"github.com/armon/go-metrics/datadog"
|
"github.com/armon/go-metrics/datadog"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/hashicorp/vault/audit"
|
"github.com/hashicorp/vault/audit"
|
||||||
"github.com/hashicorp/vault/command/server"
|
"github.com/hashicorp/vault/command/server"
|
||||||
"github.com/hashicorp/vault/helper/gated-writer"
|
"github.com/hashicorp/vault/helper/gated-writer"
|
||||||
"github.com/hashicorp/vault/helper/logbridge"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
|
||||||
"github.com/hashicorp/vault/helper/mlock"
|
"github.com/hashicorp/vault/helper/mlock"
|
||||||
"github.com/hashicorp/vault/helper/parseutil"
|
"github.com/hashicorp/vault/helper/parseutil"
|
||||||
"github.com/hashicorp/vault/helper/reload"
|
"github.com/hashicorp/vault/helper/reload"
|
||||||
|
@ -288,21 +286,19 @@ func (c *ServerCommand) Run(args []string) int {
|
||||||
// Create a logger. We wrap it in a gated writer so that it doesn't
|
// Create a logger. We wrap it in a gated writer so that it doesn't
|
||||||
// start logging too early.
|
// start logging too early.
|
||||||
c.logGate = &gatedwriter.Writer{Writer: colorable.NewColorable(os.Stderr)}
|
c.logGate = &gatedwriter.Writer{Writer: colorable.NewColorable(os.Stderr)}
|
||||||
var level int
|
var level log.Level
|
||||||
c.flagLogLevel = strings.ToLower(strings.TrimSpace(c.flagLogLevel))
|
c.flagLogLevel = strings.ToLower(strings.TrimSpace(c.flagLogLevel))
|
||||||
switch c.flagLogLevel {
|
switch c.flagLogLevel {
|
||||||
case "trace":
|
case "trace":
|
||||||
level = log.LevelTrace
|
level = log.Trace
|
||||||
case "debug":
|
case "debug":
|
||||||
level = log.LevelDebug
|
level = log.Debug
|
||||||
case "info", "":
|
case "notice", "info", "":
|
||||||
level = log.LevelInfo
|
level = log.Info
|
||||||
case "notice":
|
|
||||||
level = log.LevelNotice
|
|
||||||
case "warn", "warning":
|
case "warn", "warning":
|
||||||
level = log.LevelWarn
|
level = log.Warn
|
||||||
case "err", "error":
|
case "err", "error":
|
||||||
level = log.LevelError
|
level = log.Error
|
||||||
default:
|
default:
|
||||||
c.UI.Error(fmt.Sprintf("Unknown log level: %s", c.flagLogLevel))
|
c.UI.Error(fmt.Sprintf("Unknown log level: %s", c.flagLogLevel))
|
||||||
return 1
|
return 1
|
||||||
|
@ -315,20 +311,20 @@ func (c *ServerCommand) Run(args []string) int {
|
||||||
switch strings.ToLower(logFormat) {
|
switch strings.ToLower(logFormat) {
|
||||||
case "vault", "vault_json", "vault-json", "vaultjson", "json", "":
|
case "vault", "vault_json", "vault-json", "vaultjson", "json", "":
|
||||||
if c.flagDevThreeNode || c.flagDevFourCluster {
|
if c.flagDevThreeNode || c.flagDevFourCluster {
|
||||||
c.logger = logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{
|
c.logger = log.New(&log.LoggerOptions{
|
||||||
Mutex: &sync.Mutex{},
|
Mutex: &sync.Mutex{},
|
||||||
Output: c.logGate,
|
Output: c.logGate,
|
||||||
Level: hclog.Trace,
|
Level: log.Trace,
|
||||||
})).LogxiLogger()
|
})
|
||||||
} else {
|
} else {
|
||||||
c.logger = logformat.NewVaultLoggerWithWriter(c.logGate, level)
|
c.logger = logging.NewVaultLoggerWithWriter(c.logGate, level)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
c.logger = log.NewLogger(c.logGate, "vault")
|
c.logger = logging.NewVaultLoggerWithWriter(c.logGate, level)
|
||||||
c.logger.SetLevel(level)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
grpclog.SetLogger(&grpclogFaker{
|
grpclog.SetLogger(&grpclogFaker{
|
||||||
logger: c.logger,
|
logger: c.logger.Named("grpclogfaker"),
|
||||||
log: os.Getenv("VAULT_GRPC_LOGGING") != "",
|
log: os.Getenv("VAULT_GRPC_LOGGING") != "",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -412,7 +408,7 @@ func (c *ServerCommand) Run(args []string) int {
|
||||||
c.UI.Error(fmt.Sprintf("Unknown storage type %s", config.Storage.Type))
|
c.UI.Error(fmt.Sprintf("Unknown storage type %s", config.Storage.Type))
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
backend, err := factory(config.Storage.Config, c.logger)
|
backend, err := factory(config.Storage.Config, c.logger.ResetNamed("storage."+config.Storage.Type))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.UI.Error(fmt.Sprintf("Error initializing storage of type %s: %s", config.Storage.Type, err))
|
c.UI.Error(fmt.Sprintf("Error initializing storage of type %s: %s", config.Storage.Type, err))
|
||||||
return 1
|
return 1
|
||||||
|
@ -718,8 +714,8 @@ CLUSTER_SYNTHESIS_COMPLETE:
|
||||||
}
|
}
|
||||||
c.reloadFuncsLock.Unlock()
|
c.reloadFuncsLock.Unlock()
|
||||||
if !disableClustering {
|
if !disableClustering {
|
||||||
if c.logger.IsTrace() {
|
if c.logger.IsDebug() {
|
||||||
c.logger.Trace("cluster listener addresses synthesized", "cluster_addresses", clusterAddrs)
|
c.logger.Debug("cluster listener addresses synthesized", "cluster_addresses", clusterAddrs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1095,7 +1091,7 @@ func (c *ServerCommand) enableThreeNodeDevCluster(base *vault.CoreConfig, info m
|
||||||
testCluster := vault.NewTestCluster(&testing.RuntimeT{}, base, &vault.TestClusterOptions{
|
testCluster := vault.NewTestCluster(&testing.RuntimeT{}, base, &vault.TestClusterOptions{
|
||||||
HandlerFunc: vaulthttp.Handler,
|
HandlerFunc: vaulthttp.Handler,
|
||||||
BaseListenAddress: c.flagDevListenAddr,
|
BaseListenAddress: c.flagDevListenAddr,
|
||||||
RawLogger: c.logger,
|
Logger: c.logger,
|
||||||
TempDir: tempDir,
|
TempDir: tempDir,
|
||||||
})
|
})
|
||||||
defer c.cleanupGuard.Do(testCluster.Cleanup)
|
defer c.cleanupGuard.Do(testCluster.Cleanup)
|
||||||
|
@ -1577,19 +1573,19 @@ func (g *grpclogFaker) Fatalln(args ...interface{}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpclogFaker) Print(args ...interface{}) {
|
func (g *grpclogFaker) Print(args ...interface{}) {
|
||||||
if g.log && g.logger.IsTrace() {
|
if g.log && g.logger.IsDebug() {
|
||||||
g.logger.Trace(fmt.Sprint(args...))
|
g.logger.Debug(fmt.Sprint(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpclogFaker) Printf(format string, args ...interface{}) {
|
func (g *grpclogFaker) Printf(format string, args ...interface{}) {
|
||||||
if g.log && g.logger.IsTrace() {
|
if g.log && g.logger.IsDebug() {
|
||||||
g.logger.Trace(fmt.Sprintf(format, args...))
|
g.logger.Debug(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpclogFaker) Println(args ...interface{}) {
|
func (g *grpclogFaker) Println(args ...interface{}) {
|
||||||
if g.log && g.logger.IsTrace() {
|
if g.log && g.logger.IsDebug() {
|
||||||
g.logger.Trace(fmt.Sprintln(args...))
|
g.logger.Debug(fmt.Sprintln(args...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/hashicorp/hcl"
|
"github.com/hashicorp/hcl"
|
||||||
|
|
|
@ -6,14 +6,14 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/hcl"
|
"github.com/hashicorp/hcl"
|
||||||
"github.com/hashicorp/hcl/hcl/ast"
|
"github.com/hashicorp/hcl/hcl/ast"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLoadConfigFile(t *testing.T) {
|
func TestLoadConfigFile(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
config, err := LoadConfigFile("./test-fixtures/config.hcl", logger)
|
config, err := LoadConfigFile("./test-fixtures/config.hcl", logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -79,7 +79,7 @@ func TestLoadConfigFile(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadConfigFile_topLevel(t *testing.T) {
|
func TestLoadConfigFile_topLevel(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
config, err := LoadConfigFile("./test-fixtures/config2.hcl", logger)
|
config, err := LoadConfigFile("./test-fixtures/config2.hcl", logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -150,7 +150,7 @@ func TestLoadConfigFile_topLevel(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadConfigFile_json(t *testing.T) {
|
func TestLoadConfigFile_json(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
config, err := LoadConfigFile("./test-fixtures/config.hcl.json", logger)
|
config, err := LoadConfigFile("./test-fixtures/config.hcl.json", logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -215,7 +215,7 @@ func TestLoadConfigFile_json(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadConfigFile_json2(t *testing.T) {
|
func TestLoadConfigFile_json2(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
config, err := LoadConfigFile("./test-fixtures/config2.hcl.json", logger)
|
config, err := LoadConfigFile("./test-fixtures/config2.hcl.json", logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -283,7 +283,7 @@ func TestLoadConfigFile_json2(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadConfigDir(t *testing.T) {
|
func TestLoadConfigDir(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
config, err := LoadConfigDir("./test-fixtures/config-dir", logger)
|
config, err := LoadConfigDir("./test-fixtures/config-dir", logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -383,7 +383,7 @@ listener "tcp" {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseConfig_badTopLevel(t *testing.T) {
|
func TestParseConfig_badTopLevel(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
_, err := ParseConfig(strings.TrimSpace(`
|
_, err := ParseConfig(strings.TrimSpace(`
|
||||||
backend {}
|
backend {}
|
||||||
|
@ -405,7 +405,7 @@ nope = "yes"
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseConfig_badListener(t *testing.T) {
|
func TestParseConfig_badListener(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
_, err := ParseConfig(strings.TrimSpace(`
|
_, err := ParseConfig(strings.TrimSpace(`
|
||||||
listener "tcp" {
|
listener "tcp" {
|
||||||
|
@ -429,7 +429,7 @@ listener "tcp" {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseConfig_badTelemetry(t *testing.T) {
|
func TestParseConfig_badTelemetry(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
_, err := ParseConfig(strings.TrimSpace(`
|
_, err := ParseConfig(strings.TrimSpace(`
|
||||||
telemetry {
|
telemetry {
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
package logbridge
|
|
||||||
|
|
||||||
import (
|
|
||||||
"log"
|
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Logger struct {
|
|
||||||
hclogger hclog.Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLogger(hclogger hclog.Logger) *Logger {
|
|
||||||
return &Logger{hclogger: hclogger}
|
|
||||||
}
|
|
||||||
func (l *Logger) Trace(msg string, args ...interface{}) {
|
|
||||||
l.hclogger.Trace(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *Logger) Debug(msg string, args ...interface{}) {
|
|
||||||
l.hclogger.Debug(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *Logger) Info(msg string, args ...interface{}) {
|
|
||||||
l.hclogger.Info(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *Logger) Warn(msg string, args ...interface{}) {
|
|
||||||
l.hclogger.Warn(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *Logger) Error(msg string, args ...interface{}) {
|
|
||||||
l.hclogger.Error(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *Logger) IsTrace() bool {
|
|
||||||
return l.hclogger.IsTrace()
|
|
||||||
}
|
|
||||||
func (l *Logger) IsDebug() bool {
|
|
||||||
return l.hclogger.IsDebug()
|
|
||||||
}
|
|
||||||
func (l *Logger) IsInfo() bool {
|
|
||||||
return l.hclogger.IsInfo()
|
|
||||||
}
|
|
||||||
func (l *Logger) IsWarn() bool {
|
|
||||||
return l.hclogger.IsWarn()
|
|
||||||
}
|
|
||||||
func (l *Logger) With(args ...interface{}) *Logger {
|
|
||||||
return &Logger{
|
|
||||||
hclogger: l.hclogger.With(args...),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (l *Logger) Named(name string) *Logger {
|
|
||||||
return &Logger{
|
|
||||||
hclogger: l.hclogger.Named(name),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (l *Logger) ResetNamed(name string) *Logger {
|
|
||||||
return &Logger{
|
|
||||||
hclogger: l.hclogger.ResetNamed(name),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (l *Logger) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
|
|
||||||
return l.hclogger.StandardLogger(opts)
|
|
||||||
}
|
|
||||||
func (l *Logger) LogxiLogger() *LogxiLogger {
|
|
||||||
return &LogxiLogger{
|
|
||||||
l: l,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is only for compatibility with whatever the fuck is up with the errors
|
|
||||||
// coming back from warn/error in Logxi's API. Don't use this directly.
|
|
||||||
type LogxiLogger struct {
|
|
||||||
l *Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LogxiLogger) Trace(msg string, args ...interface{}) {
|
|
||||||
l.l.Trace(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Debug(msg string, args ...interface{}) {
|
|
||||||
l.l.Debug(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Info(msg string, args ...interface{}) {
|
|
||||||
l.l.Info(msg, args...)
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Warn(msg string, args ...interface{}) error {
|
|
||||||
l.l.Warn(msg, args...)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Error(msg string, args ...interface{}) error {
|
|
||||||
l.l.Error(msg, args...)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Fatal(msg string, args ...interface{}) {
|
|
||||||
panic(msg)
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Log(level int, msg string, args []interface{}) {
|
|
||||||
panic(msg)
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) IsTrace() bool {
|
|
||||||
return l.l.IsTrace()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) IsDebug() bool {
|
|
||||||
return l.l.IsDebug()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) IsInfo() bool {
|
|
||||||
return l.l.IsInfo()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) IsWarn() bool {
|
|
||||||
return l.l.IsWarn()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) SetLevel(level int) {
|
|
||||||
panic("set level")
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) With(args ...interface{}) *LogxiLogger {
|
|
||||||
return l.l.With(args...).LogxiLogger()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) Named(name string) *LogxiLogger {
|
|
||||||
return l.l.Named(name).LogxiLogger()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) ResetNamed(name string) *LogxiLogger {
|
|
||||||
return l.l.ResetNamed(name).LogxiLogger()
|
|
||||||
}
|
|
||||||
func (l *LogxiLogger) StandardLogger(opts *hclog.StandardLoggerOptions) *log.Logger {
|
|
||||||
return l.l.StandardLogger(opts)
|
|
||||||
}
|
|
|
@ -1,175 +0,0 @@
|
||||||
package logformat
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
styledefault = iota
|
|
||||||
stylejson
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewVaultLogger creates a new logger with the specified level and a Vault
|
|
||||||
// formatter
|
|
||||||
func NewVaultLogger(level int) log.Logger {
|
|
||||||
logger := log.New("vault")
|
|
||||||
return setLevelFormatter(logger, level, createVaultFormatter())
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVaultLoggerWithWriter creates a new logger with the specified level and
|
|
||||||
// writer and a Vault formatter
|
|
||||||
func NewVaultLoggerWithWriter(w io.Writer, level int) log.Logger {
|
|
||||||
logger := log.NewLogger(w, "vault")
|
|
||||||
return setLevelFormatter(logger, level, createVaultFormatter())
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sets the level and formatter on the log, which must be a DefaultLogger
|
|
||||||
func setLevelFormatter(logger log.Logger, level int, formatter log.Formatter) log.Logger {
|
|
||||||
logger.(*log.DefaultLogger).SetLevel(level)
|
|
||||||
logger.(*log.DefaultLogger).SetFormatter(formatter)
|
|
||||||
return logger
|
|
||||||
}
|
|
||||||
|
|
||||||
// Creates a formatter, checking env vars for the style
|
|
||||||
func createVaultFormatter() log.Formatter {
|
|
||||||
ret := &vaultFormatter{
|
|
||||||
Mutex: &sync.Mutex{},
|
|
||||||
}
|
|
||||||
logFormat := os.Getenv("VAULT_LOG_FORMAT")
|
|
||||||
if logFormat == "" {
|
|
||||||
logFormat = os.Getenv("LOGXI_FORMAT")
|
|
||||||
}
|
|
||||||
switch strings.ToLower(logFormat) {
|
|
||||||
case "json", "vault_json", "vault-json", "vaultjson":
|
|
||||||
ret.style = stylejson
|
|
||||||
default:
|
|
||||||
ret.style = styledefault
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
// Thread safe formatter
|
|
||||||
type vaultFormatter struct {
|
|
||||||
*sync.Mutex
|
|
||||||
style int
|
|
||||||
module string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *vaultFormatter) Format(writer io.Writer, level int, msg string, args []interface{}) {
|
|
||||||
currTime := time.Now()
|
|
||||||
v.Lock()
|
|
||||||
defer v.Unlock()
|
|
||||||
switch v.style {
|
|
||||||
case stylejson:
|
|
||||||
v.formatJSON(writer, currTime, level, msg, args)
|
|
||||||
default:
|
|
||||||
v.formatDefault(writer, currTime, level, msg, args)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *vaultFormatter) formatDefault(writer io.Writer, currTime time.Time, level int, msg string, args []interface{}) {
|
|
||||||
// Write a trailing newline
|
|
||||||
defer writer.Write([]byte("\n"))
|
|
||||||
|
|
||||||
writer.Write([]byte(currTime.Local().Format("2006/01/02 15:04:05.000000")))
|
|
||||||
|
|
||||||
switch level {
|
|
||||||
case log.LevelCritical:
|
|
||||||
writer.Write([]byte(" [CRIT ] "))
|
|
||||||
case log.LevelError:
|
|
||||||
writer.Write([]byte(" [ERROR] "))
|
|
||||||
case log.LevelWarn:
|
|
||||||
writer.Write([]byte(" [WARN ] "))
|
|
||||||
case log.LevelInfo:
|
|
||||||
writer.Write([]byte(" [INFO ] "))
|
|
||||||
case log.LevelDebug:
|
|
||||||
writer.Write([]byte(" [DEBUG] "))
|
|
||||||
case log.LevelTrace:
|
|
||||||
writer.Write([]byte(" [TRACE] "))
|
|
||||||
default:
|
|
||||||
writer.Write([]byte(" [ALL ] "))
|
|
||||||
}
|
|
||||||
|
|
||||||
if v.module != "" {
|
|
||||||
writer.Write([]byte(fmt.Sprintf("(%s) ", v.module)))
|
|
||||||
}
|
|
||||||
|
|
||||||
writer.Write([]byte(msg))
|
|
||||||
|
|
||||||
if args != nil && len(args) > 0 {
|
|
||||||
if len(args)%2 != 0 {
|
|
||||||
args = append(args, "[unknown!]")
|
|
||||||
}
|
|
||||||
|
|
||||||
writer.Write([]byte(":"))
|
|
||||||
|
|
||||||
for i := 0; i < len(args); i = i + 2 {
|
|
||||||
var quote string
|
|
||||||
switch args[i+1].(type) {
|
|
||||||
case string:
|
|
||||||
if strings.ContainsRune(args[i+1].(string), ' ') {
|
|
||||||
quote = `"`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
writer.Write([]byte(fmt.Sprintf(" %s=%s%v%s", args[i], quote, args[i+1], quote)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (v *vaultFormatter) formatJSON(writer io.Writer, currTime time.Time, level int, msg string, args []interface{}) {
|
|
||||||
vals := map[string]interface{}{
|
|
||||||
"@message": msg,
|
|
||||||
"@timestamp": currTime.Format("2006-01-02T15:04:05.000000Z07:00"),
|
|
||||||
}
|
|
||||||
|
|
||||||
var levelStr string
|
|
||||||
switch level {
|
|
||||||
case log.LevelCritical:
|
|
||||||
levelStr = "critical"
|
|
||||||
case log.LevelError:
|
|
||||||
levelStr = "error"
|
|
||||||
case log.LevelWarn:
|
|
||||||
levelStr = "warn"
|
|
||||||
case log.LevelInfo:
|
|
||||||
levelStr = "info"
|
|
||||||
case log.LevelDebug:
|
|
||||||
levelStr = "debug"
|
|
||||||
case log.LevelTrace:
|
|
||||||
levelStr = "trace"
|
|
||||||
default:
|
|
||||||
levelStr = "all"
|
|
||||||
}
|
|
||||||
|
|
||||||
vals["@level"] = levelStr
|
|
||||||
|
|
||||||
if v.module != "" {
|
|
||||||
vals["@module"] = v.module
|
|
||||||
}
|
|
||||||
|
|
||||||
if args != nil && len(args) > 0 {
|
|
||||||
|
|
||||||
if len(args)%2 != 0 {
|
|
||||||
args = append(args, "[unknown!]")
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0; i < len(args); i = i + 2 {
|
|
||||||
if _, ok := args[i].(string); !ok {
|
|
||||||
// As this is the logging function not much we can do here
|
|
||||||
// without injecting into logs...
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
vals[args[i].(string)] = args[i+1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enc := json.NewEncoder(writer)
|
|
||||||
enc.Encode(vals)
|
|
||||||
}
|
|
39
helper/logging/vault.go
Normal file
39
helper/logging/vault.go
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
package logging
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewVaultLogger creates a new logger with the specified level and a Vault
|
||||||
|
// formatter
|
||||||
|
func NewVaultLogger(level log.Level) log.Logger {
|
||||||
|
return NewVaultLoggerWithWriter(log.DefaultOutput, level)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewVaultLoggerWithWriter creates a new logger with the specified level and
|
||||||
|
// writer and a Vault formatter
|
||||||
|
func NewVaultLoggerWithWriter(w io.Writer, level log.Level) log.Logger {
|
||||||
|
opts := &log.LoggerOptions{
|
||||||
|
Level: level,
|
||||||
|
Output: w,
|
||||||
|
JSONFormat: useJson(),
|
||||||
|
}
|
||||||
|
return log.New(opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
func useJson() bool {
|
||||||
|
logFormat := os.Getenv("VAULT_LOG_FORMAT")
|
||||||
|
if logFormat == "" {
|
||||||
|
logFormat = os.Getenv("LOGXI_FORMAT")
|
||||||
|
}
|
||||||
|
switch strings.ToLower(logFormat) {
|
||||||
|
case "json", "vault_json", "vault-json", "vaultjson":
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,158 +0,0 @@
|
||||||
package pluginutil
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
stdlog "log"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// pluginLogFaker is a wrapper on logxi.Logger that
|
|
||||||
// implements hclog.Logger
|
|
||||||
type hclogFaker struct {
|
|
||||||
logger log.Logger
|
|
||||||
|
|
||||||
name string
|
|
||||||
implied []interface{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) buildLog(msg string, args ...interface{}) (string, []interface{}) {
|
|
||||||
if f.name != "" {
|
|
||||||
msg = fmt.Sprintf("%s: %s", f.name, msg)
|
|
||||||
}
|
|
||||||
args = append(f.implied, args...)
|
|
||||||
|
|
||||||
return msg, args
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Trace(msg string, args ...interface{}) {
|
|
||||||
msg, args = f.buildLog(msg, args...)
|
|
||||||
f.logger.Trace(msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Debug(msg string, args ...interface{}) {
|
|
||||||
msg, args = f.buildLog(msg, args...)
|
|
||||||
f.logger.Debug(msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Info(msg string, args ...interface{}) {
|
|
||||||
msg, args = f.buildLog(msg, args...)
|
|
||||||
f.logger.Info(msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Warn(msg string, args ...interface{}) {
|
|
||||||
msg, args = f.buildLog(msg, args...)
|
|
||||||
f.logger.Warn(msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Error(msg string, args ...interface{}) {
|
|
||||||
msg, args = f.buildLog(msg, args...)
|
|
||||||
f.logger.Error(msg, args...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) IsTrace() bool {
|
|
||||||
return f.logger.IsTrace()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) IsDebug() bool {
|
|
||||||
return f.logger.IsDebug()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) IsInfo() bool {
|
|
||||||
return f.logger.IsInfo()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) IsWarn() bool {
|
|
||||||
return f.logger.IsWarn()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) IsError() bool {
|
|
||||||
return !f.logger.IsTrace() && !f.logger.IsDebug() && !f.logger.IsInfo() && !f.IsWarn()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) With(args ...interface{}) hclog.Logger {
|
|
||||||
var nf = *f
|
|
||||||
nf.implied = append(nf.implied, args...)
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) Named(name string) hclog.Logger {
|
|
||||||
var nf = *f
|
|
||||||
if nf.name != "" {
|
|
||||||
nf.name = nf.name + "." + name
|
|
||||||
}
|
|
||||||
return &nf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) ResetNamed(name string) hclog.Logger {
|
|
||||||
var nf = *f
|
|
||||||
nf.name = name
|
|
||||||
return &nf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *hclogFaker) StandardLogger(opts *hclog.StandardLoggerOptions) *stdlog.Logger {
|
|
||||||
if opts == nil {
|
|
||||||
opts = &hclog.StandardLoggerOptions{}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stdlog.New(&stdlogAdapter{f, opts.InferLevels}, "", 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Provides a io.Writer to shim the data out of *log.Logger
|
|
||||||
// and back into our Logger. This is basically the only way to
|
|
||||||
// build upon *log.Logger.
|
|
||||||
type stdlogAdapter struct {
|
|
||||||
hl hclog.Logger
|
|
||||||
inferLevels bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// Take the data, infer the levels if configured, and send it through
|
|
||||||
// a regular Logger
|
|
||||||
func (s *stdlogAdapter) Write(data []byte) (int, error) {
|
|
||||||
str := string(bytes.TrimRight(data, " \t\n"))
|
|
||||||
|
|
||||||
if s.inferLevels {
|
|
||||||
level, str := s.pickLevel(str)
|
|
||||||
switch level {
|
|
||||||
case hclog.Trace:
|
|
||||||
s.hl.Trace(str)
|
|
||||||
case hclog.Debug:
|
|
||||||
s.hl.Debug(str)
|
|
||||||
case hclog.Info:
|
|
||||||
s.hl.Info(str)
|
|
||||||
case hclog.Warn:
|
|
||||||
s.hl.Warn(str)
|
|
||||||
case hclog.Error:
|
|
||||||
s.hl.Error(str)
|
|
||||||
default:
|
|
||||||
s.hl.Info(str)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
s.hl.Info(str)
|
|
||||||
}
|
|
||||||
|
|
||||||
return len(data), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Detect, based on conventions, what log level this is
|
|
||||||
func (s *stdlogAdapter) pickLevel(str string) (hclog.Level, string) {
|
|
||||||
switch {
|
|
||||||
case strings.HasPrefix(str, "[DEBUG]"):
|
|
||||||
return hclog.Debug, strings.TrimSpace(str[7:])
|
|
||||||
case strings.HasPrefix(str, "[TRACE]"):
|
|
||||||
return hclog.Trace, strings.TrimSpace(str[7:])
|
|
||||||
case strings.HasPrefix(str, "[INFO]"):
|
|
||||||
return hclog.Info, strings.TrimSpace(str[6:])
|
|
||||||
case strings.HasPrefix(str, "[WARN]"):
|
|
||||||
return hclog.Warn, strings.TrimSpace(str[7:])
|
|
||||||
case strings.HasPrefix(str, "[ERROR]"):
|
|
||||||
return hclog.Error, strings.TrimSpace(str[7:])
|
|
||||||
case strings.HasPrefix(str, "[ERR]"):
|
|
||||||
return hclog.Error, strings.TrimSpace(str[5:])
|
|
||||||
default:
|
|
||||||
return hclog.Info, str
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,11 +9,11 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
plugin "github.com/hashicorp/go-plugin"
|
plugin "github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
"github.com/hashicorp/vault/helper/wrapping"
|
"github.com/hashicorp/vault/helper/wrapping"
|
||||||
"github.com/hashicorp/vault/version"
|
"github.com/hashicorp/vault/version"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Looker defines the plugin Lookup function that looks into the plugin catalog
|
// Looker defines the plugin Lookup function that looks into the plugin catalog
|
||||||
|
@ -73,12 +73,6 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
|
||||||
}
|
}
|
||||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginVaultVersionEnv, version.GetVersion().Version))
|
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginVaultVersionEnv, version.GetVersion().Version))
|
||||||
|
|
||||||
// Create logger for the plugin client
|
|
||||||
clogger := &hclogFaker{
|
|
||||||
logger: logger,
|
|
||||||
}
|
|
||||||
namedLogger := clogger.ResetNamed("plugin")
|
|
||||||
|
|
||||||
var clientTLSConfig *tls.Config
|
var clientTLSConfig *tls.Config
|
||||||
if !isMetadataMode {
|
if !isMetadataMode {
|
||||||
// Add the metadata mode ENV and set it to false
|
// Add the metadata mode ENV and set it to false
|
||||||
|
@ -106,7 +100,7 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
|
||||||
// Add the response wrap token to the ENV of the plugin
|
// Add the response wrap token to the ENV of the plugin
|
||||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginUnwrapTokenEnv, wrapToken))
|
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginUnwrapTokenEnv, wrapToken))
|
||||||
} else {
|
} else {
|
||||||
namedLogger = clogger.ResetNamed("plugin.metadata")
|
logger = logger.With("metadata", "true")
|
||||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginMetadataModeEnv, "true"))
|
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", PluginMetadataModeEnv, "true"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +115,7 @@ func (r *PluginRunner) runCommon(ctx context.Context, wrapper RunnerUtil, plugin
|
||||||
Cmd: cmd,
|
Cmd: cmd,
|
||||||
SecureConfig: secureConfig,
|
SecureConfig: secureConfig,
|
||||||
TLSConfig: clientTLSConfig,
|
TLSConfig: clientTLSConfig,
|
||||||
Logger: namedLogger,
|
Logger: logger,
|
||||||
AllowedProtocols: []plugin.Protocol{
|
AllowedProtocols: []plugin.Protocol{
|
||||||
plugin.ProtocolNetRPC,
|
plugin.ProtocolNetRPC,
|
||||||
plugin.ProtocolGRPC,
|
plugin.ProtocolGRPC,
|
||||||
|
|
|
@ -10,10 +10,10 @@ import (
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/compressutil"
|
"github.com/hashicorp/vault/helper/compressutil"
|
||||||
"github.com/hashicorp/vault/helper/locksutil"
|
"github.com/hashicorp/vault/helper/locksutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -347,7 +347,7 @@ func NewStoragePacker(view logical.Storage, logger log.Logger, viewPrefix string
|
||||||
packer := &StoragePacker{
|
packer := &StoragePacker{
|
||||||
view: view,
|
view: view,
|
||||||
viewPrefix: viewPrefix,
|
viewPrefix: viewPrefix,
|
||||||
logger: logger,
|
logger: logger.Named("storagepacker"),
|
||||||
storageLocks: locksutil.CreateLocks(),
|
storageLocks: locksutil.CreateLocks(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,14 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/golang/protobuf/ptypes"
|
"github.com/golang/protobuf/ptypes"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
uuid "github.com/hashicorp/go-uuid"
|
uuid "github.com/hashicorp/go-uuid"
|
||||||
"github.com/hashicorp/vault/helper/identity"
|
"github.com/hashicorp/vault/helper/identity"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkStoragePacker(b *testing.B) {
|
func BenchmarkStoragePacker(b *testing.B) {
|
||||||
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "")
|
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatal(err)
|
b.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ func BenchmarkStoragePacker(b *testing.B) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStoragePacker(t *testing.T) {
|
func TestStoragePacker(t *testing.T) {
|
||||||
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "")
|
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ func TestStoragePacker(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStoragePacker_SerializeDeserializeComplexItem(t *testing.T) {
|
func TestStoragePacker_SerializeDeserializeComplexItem(t *testing.T) {
|
||||||
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New("storagepackertest"), "")
|
storagePacker, err := NewStoragePacker(&logical.InmemStorage{}, log.New(&log.LoggerOptions{Name: "storagepackertest"}), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,7 +290,7 @@ func testHTTP_Forwarding_Stress_Common(t *testing.T, parallel bool, num uint64)
|
||||||
waitCond.L.Unlock()
|
waitCond.L.Unlock()
|
||||||
waitCond.Broadcast()
|
waitCond.Broadcast()
|
||||||
|
|
||||||
core.Logger().Trace("Starting goroutine", "id", id)
|
core.Logger().Debug("Starting goroutine", "id", id)
|
||||||
|
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
for {
|
for {
|
||||||
|
|
|
@ -167,7 +167,7 @@ func handleRequestForwarding(core *vault.Core, handler http.Handler) http.Handle
|
||||||
|
|
||||||
if r.Header.Get(NoRequestForwardingHeaderName) != "" {
|
if r.Header.Get(NoRequestForwardingHeaderName) != "" {
|
||||||
// Forwarding explicitly disabled, fall back to previous behavior
|
// Forwarding explicitly disabled, fall back to previous behavior
|
||||||
core.Logger().Trace("http/handleRequestForwarding: forwarding disabled by client request")
|
core.Logger().Debug("handleRequestForwarding: forwarding disabled by client request")
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -202,9 +202,9 @@ func handleRequestForwarding(core *vault.Core, handler http.Handler) http.Handle
|
||||||
statusCode, header, retBytes, err := core.ForwardRequest(r)
|
statusCode, header, retBytes, err := core.ForwardRequest(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == vault.ErrCannotForward {
|
if err == vault.ErrCannotForward {
|
||||||
core.Logger().Trace("http/handleRequestForwarding: cannot forward (possibly disabled on active node), falling back")
|
core.Logger().Debug("handleRequestForwarding: cannot forward (possibly disabled on active node), falling back")
|
||||||
} else {
|
} else {
|
||||||
core.Logger().Error("http/handleRequestForwarding: error forwarding request", "error", err)
|
core.Logger().Error("handleRequestForwarding: error forwarding request", "error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to redirection
|
// Fall back to redirection
|
||||||
|
|
|
@ -13,9 +13,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
"github.com/hashicorp/vault/physical/inmem"
|
"github.com/hashicorp/vault/physical/inmem"
|
||||||
|
@ -85,7 +85,7 @@ func TestLogical_StandbyRedirect(t *testing.T) {
|
||||||
defer ln2.Close()
|
defer ln2.Close()
|
||||||
|
|
||||||
// Create an HA Vault
|
// Create an HA Vault
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inmha, err := inmem.NewInmemHA(nil, logger)
|
inmha, err := inmem.NewInmemHA(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -137,9 +137,9 @@ func TestLogical_StandbyRedirect(t *testing.T) {
|
||||||
resp := testHttpPutDisableRedirect(t, root, addr2+"/v1/secret/foo", map[string]interface{}{
|
resp := testHttpPutDisableRedirect(t, root, addr2+"/v1/secret/foo", map[string]interface{}{
|
||||||
"data": "bar",
|
"data": "bar",
|
||||||
})
|
})
|
||||||
logger.Trace("307 test one starting")
|
logger.Debug("307 test one starting")
|
||||||
testResponseStatus(t, resp, 307)
|
testResponseStatus(t, resp, 307)
|
||||||
logger.Trace("307 test one stopping")
|
logger.Debug("307 test one stopping")
|
||||||
|
|
||||||
//// READ to standby
|
//// READ to standby
|
||||||
resp = testHttpGet(t, root, addr2+"/v1/auth/token/lookup-self")
|
resp = testHttpGet(t, root, addr2+"/v1/auth/token/lookup-self")
|
||||||
|
@ -181,9 +181,9 @@ func TestLogical_StandbyRedirect(t *testing.T) {
|
||||||
|
|
||||||
//// DELETE to standby
|
//// DELETE to standby
|
||||||
resp = testHttpDeleteDisableRedirect(t, root, addr2+"/v1/secret/foo")
|
resp = testHttpDeleteDisableRedirect(t, root, addr2+"/v1/secret/foo")
|
||||||
logger.Trace("307 test two starting")
|
logger.Debug("307 test two starting")
|
||||||
testResponseStatus(t, resp, 307)
|
testResponseStatus(t, resp, 307)
|
||||||
logger.Trace("307 test two stopping")
|
logger.Debug("307 test two stopping")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLogical_CreateToken(t *testing.T) {
|
func TestLogical_CreateToken(t *testing.T) {
|
||||||
|
|
|
@ -8,10 +8,9 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
bplugin "github.com/hashicorp/vault/builtin/plugin"
|
bplugin "github.com/hashicorp/vault/builtin/plugin"
|
||||||
"github.com/hashicorp/vault/helper/logbridge"
|
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin"
|
"github.com/hashicorp/vault/logical/plugin"
|
||||||
|
@ -20,8 +19,8 @@ import (
|
||||||
"github.com/hashicorp/vault/vault"
|
"github.com/hashicorp/vault/vault"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getPluginClusterAndCore(t testing.TB, logger *logbridge.Logger) (*vault.TestCluster, *vault.TestClusterCore) {
|
func getPluginClusterAndCore(t testing.TB, logger log.Logger) (*vault.TestCluster, *vault.TestClusterCore) {
|
||||||
inmha, err := inmem.NewInmemHA(nil, logger.LogxiLogger())
|
inmha, err := inmem.NewInmemHA(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -35,7 +34,7 @@ func getPluginClusterAndCore(t testing.TB, logger *logbridge.Logger) (*vault.Tes
|
||||||
|
|
||||||
cluster := vault.NewTestCluster(t, coreConfig, &vault.TestClusterOptions{
|
cluster := vault.NewTestCluster(t, coreConfig, &vault.TestClusterOptions{
|
||||||
HandlerFunc: Handler,
|
HandlerFunc: Handler,
|
||||||
RawLogger: logger,
|
Logger: logger.Named("testclusteroptions"),
|
||||||
})
|
})
|
||||||
cluster.Start()
|
cluster.Start()
|
||||||
|
|
||||||
|
@ -91,9 +90,9 @@ func TestPlugin_PluginMain(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPlugin_MockList(t *testing.T) {
|
func TestPlugin_MockList(t *testing.T) {
|
||||||
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{
|
logger := log.New(&log.LoggerOptions{
|
||||||
Mutex: &sync.Mutex{},
|
Mutex: &sync.Mutex{},
|
||||||
}))
|
})
|
||||||
cluster, core := getPluginClusterAndCore(t, logger)
|
cluster, core := getPluginClusterAndCore(t, logger)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
|
@ -129,9 +128,9 @@ func TestPlugin_MockList(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPlugin_MockRawResponse(t *testing.T) {
|
func TestPlugin_MockRawResponse(t *testing.T) {
|
||||||
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{
|
logger := log.New(&log.LoggerOptions{
|
||||||
Mutex: &sync.Mutex{},
|
Mutex: &sync.Mutex{},
|
||||||
}))
|
})
|
||||||
cluster, core := getPluginClusterAndCore(t, logger)
|
cluster, core := getPluginClusterAndCore(t, logger)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
|
@ -155,9 +154,9 @@ func TestPlugin_MockRawResponse(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPlugin_GetParams(t *testing.T) {
|
func TestPlugin_GetParams(t *testing.T) {
|
||||||
logger := logbridge.NewLogger(hclog.New(&hclog.LoggerOptions{
|
logger := log.New(&log.LoggerOptions{
|
||||||
Mutex: &sync.Mutex{},
|
Mutex: &sync.Mutex{},
|
||||||
}))
|
})
|
||||||
cluster, core := getPluginClusterAndCore(t, logger)
|
cluster, core := getPluginClusterAndCore(t, logger)
|
||||||
defer cluster.Cleanup()
|
defer cluster.Cleanup()
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,11 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/hashicorp/vault/helper/errutil"
|
"github.com/hashicorp/vault/helper/errutil"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/helper/parseutil"
|
"github.com/hashicorp/vault/helper/parseutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
)
|
)
|
||||||
|
@ -255,7 +255,7 @@ func (b *Backend) Logger() log.Logger {
|
||||||
return b.logger
|
return b.logger
|
||||||
}
|
}
|
||||||
|
|
||||||
return logformat.NewVaultLoggerWithWriter(ioutil.Discard, log.LevelOff)
|
return logging.NewVaultLoggerWithWriter(ioutil.Discard, log.NoLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
// System returns the backend's system view.
|
// System returns the backend's system view.
|
||||||
|
|
|
@ -3,7 +3,7 @@ package logical
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BackendType is the type of backend that is being implemented
|
// BackendType is the type of backend that is being implemented
|
||||||
|
|
|
@ -7,9 +7,8 @@ import (
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/logbridge"
|
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin/pb"
|
"github.com/hashicorp/vault/logical/plugin/pb"
|
||||||
)
|
)
|
||||||
|
@ -18,12 +17,18 @@ import (
|
||||||
type BackendPlugin struct {
|
type BackendPlugin struct {
|
||||||
Factory logical.Factory
|
Factory logical.Factory
|
||||||
metadataMode bool
|
metadataMode bool
|
||||||
Logger hclog.Logger
|
Logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// Server gets called when on plugin.Serve()
|
// Server gets called when on plugin.Serve()
|
||||||
func (b *BackendPlugin) Server(broker *plugin.MuxBroker) (interface{}, error) {
|
func (b *BackendPlugin) Server(broker *plugin.MuxBroker) (interface{}, error) {
|
||||||
return &backendPluginServer{factory: b.Factory, broker: broker}, nil
|
return &backendPluginServer{
|
||||||
|
factory: b.Factory,
|
||||||
|
broker: broker,
|
||||||
|
// We pass the logger down into the backend so go-plugin will forward
|
||||||
|
// logs for us.
|
||||||
|
logger: b.Logger,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Client gets called on plugin.NewClient()
|
// Client gets called on plugin.NewClient()
|
||||||
|
@ -37,7 +42,7 @@ func (b BackendPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) err
|
||||||
factory: b.Factory,
|
factory: b.Factory,
|
||||||
// We pass the logger down into the backend so go-plugin will forward
|
// We pass the logger down into the backend so go-plugin will forward
|
||||||
// logs for us.
|
// logs for us.
|
||||||
logger: logbridge.NewLogger(b.Logger).LogxiLogger(),
|
logger: b.Logger,
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,9 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"net/rpc"
|
"net/rpc"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -204,16 +204,6 @@ func (b *backendPluginClient) Setup(ctx context.Context, config *logical.Backend
|
||||||
impl: storageImpl,
|
impl: storageImpl,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Shim log.Logger
|
|
||||||
loggerImpl := config.Logger
|
|
||||||
if b.metadataMode {
|
|
||||||
loggerImpl = log.NullLog
|
|
||||||
}
|
|
||||||
loggerID := b.broker.NextId()
|
|
||||||
go b.broker.AcceptAndServe(loggerID, &LoggerServer{
|
|
||||||
logger: loggerImpl,
|
|
||||||
})
|
|
||||||
|
|
||||||
// Shim logical.SystemView
|
// Shim logical.SystemView
|
||||||
sysViewImpl := config.System
|
sysViewImpl := config.System
|
||||||
if b.metadataMode {
|
if b.metadataMode {
|
||||||
|
@ -226,7 +216,6 @@ func (b *backendPluginClient) Setup(ctx context.Context, config *logical.Backend
|
||||||
|
|
||||||
args := &SetupArgs{
|
args := &SetupArgs{
|
||||||
StorageID: storageID,
|
StorageID: storageID,
|
||||||
LoggerID: loggerID,
|
|
||||||
SysViewID: sysViewID,
|
SysViewID: sysViewID,
|
||||||
Config: config.Config,
|
Config: config.Config,
|
||||||
BackendUUID: config.BackendUUID,
|
BackendUUID: config.BackendUUID,
|
||||||
|
|
|
@ -6,6 +6,8 @@ import (
|
||||||
"net/rpc"
|
"net/rpc"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
|
@ -22,7 +24,7 @@ type backendPluginServer struct {
|
||||||
backend logical.Backend
|
backend logical.Backend
|
||||||
factory logical.Factory
|
factory logical.Factory
|
||||||
|
|
||||||
loggerClient *rpc.Client
|
logger hclog.Logger
|
||||||
sysViewClient *rpc.Client
|
sysViewClient *rpc.Client
|
||||||
storageClient *rpc.Client
|
storageClient *rpc.Client
|
||||||
}
|
}
|
||||||
|
@ -77,7 +79,6 @@ func (b *backendPluginServer) Cleanup(_ interface{}, _ *struct{}) error {
|
||||||
b.backend.Cleanup(context.Background())
|
b.backend.Cleanup(context.Background())
|
||||||
|
|
||||||
// Close rpc clients
|
// Close rpc clients
|
||||||
b.loggerClient.Close()
|
|
||||||
b.sysViewClient.Close()
|
b.sysViewClient.Close()
|
||||||
b.storageClient.Close()
|
b.storageClient.Close()
|
||||||
return nil
|
return nil
|
||||||
|
@ -109,19 +110,6 @@ func (b *backendPluginServer) Setup(args *SetupArgs, reply *SetupReply) error {
|
||||||
|
|
||||||
storage := &StorageClient{client: rawStorageClient}
|
storage := &StorageClient{client: rawStorageClient}
|
||||||
|
|
||||||
// Dial for logger
|
|
||||||
loggerConn, err := b.broker.Dial(args.LoggerID)
|
|
||||||
if err != nil {
|
|
||||||
*reply = SetupReply{
|
|
||||||
Error: wrapError(err),
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
rawLoggerClient := rpc.NewClient(loggerConn)
|
|
||||||
b.loggerClient = rawLoggerClient
|
|
||||||
|
|
||||||
logger := &LoggerClient{client: rawLoggerClient}
|
|
||||||
|
|
||||||
// Dial for sys view
|
// Dial for sys view
|
||||||
sysViewConn, err := b.broker.Dial(args.SysViewID)
|
sysViewConn, err := b.broker.Dial(args.SysViewID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -137,7 +125,7 @@ func (b *backendPluginServer) Setup(args *SetupArgs, reply *SetupReply) error {
|
||||||
|
|
||||||
config := &logical.BackendConfig{
|
config := &logical.BackendConfig{
|
||||||
StorageView: storage,
|
StorageView: storage,
|
||||||
Logger: logger,
|
Logger: b.logger,
|
||||||
System: sysView,
|
System: sysView,
|
||||||
Config: args.Config,
|
Config: args.Config,
|
||||||
BackendUUID: args.BackendUUID,
|
BackendUUID: args.BackendUUID,
|
||||||
|
|
|
@ -5,11 +5,11 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
gplugin "github.com/hashicorp/go-plugin"
|
gplugin "github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin/mock"
|
"github.com/hashicorp/vault/logical/plugin/mock"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBackendPlugin_impl(t *testing.T) {
|
func TestBackendPlugin_impl(t *testing.T) {
|
||||||
|
@ -156,7 +156,7 @@ func testBackend(t *testing.T) (logical.Backend, func()) {
|
||||||
b := raw.(logical.Backend)
|
b := raw.(logical.Backend)
|
||||||
|
|
||||||
err = b.Setup(context.Background(), &logical.BackendConfig{
|
err = b.Setup(context.Background(), &logical.BackendConfig{
|
||||||
Logger: logformat.NewVaultLogger(log.LevelTrace),
|
Logger: logging.NewVaultLogger(log.Debug),
|
||||||
System: &logical.StaticSystemView{
|
System: &logical.StaticSystemView{
|
||||||
DefaultLeaseTTLVal: 300 * time.Second,
|
DefaultLeaseTTLVal: 300 * time.Second,
|
||||||
MaxLeaseTTLVal: 1800 * time.Second,
|
MaxLeaseTTLVal: 1800 * time.Second,
|
||||||
|
|
|
@ -7,11 +7,11 @@ import (
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin/pb"
|
"github.com/hashicorp/vault/logical/plugin/pb"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var ErrPluginShutdown = errors.New("plugin is shut down")
|
var ErrPluginShutdown = errors.New("plugin is shut down")
|
||||||
|
|
|
@ -3,10 +3,10 @@ package plugin
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
plugin "github.com/hashicorp/go-plugin"
|
plugin "github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin/pb"
|
"github.com/hashicorp/vault/logical/plugin/pb"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -6,12 +6,11 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
gplugin "github.com/hashicorp/go-plugin"
|
gplugin "github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/logical/plugin/mock"
|
"github.com/hashicorp/vault/logical/plugin/mock"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGRPCBackendPlugin_impl(t *testing.T) {
|
func TestGRPCBackendPlugin_impl(t *testing.T) {
|
||||||
|
@ -143,8 +142,8 @@ func testGRPCBackend(t *testing.T) (logical.Backend, func()) {
|
||||||
pluginMap := map[string]gplugin.Plugin{
|
pluginMap := map[string]gplugin.Plugin{
|
||||||
"backend": &BackendPlugin{
|
"backend": &BackendPlugin{
|
||||||
Factory: mock.Factory,
|
Factory: mock.Factory,
|
||||||
Logger: hclog.New(&hclog.LoggerOptions{
|
Logger: log.New(&log.LoggerOptions{
|
||||||
Level: hclog.Trace,
|
Level: log.Debug,
|
||||||
Output: os.Stderr,
|
Output: os.Stderr,
|
||||||
JSONFormat: true,
|
JSONFormat: true,
|
||||||
}),
|
}),
|
||||||
|
@ -163,7 +162,7 @@ func testGRPCBackend(t *testing.T) (logical.Backend, func()) {
|
||||||
b := raw.(logical.Backend)
|
b := raw.(logical.Backend)
|
||||||
|
|
||||||
err = b.Setup(context.Background(), &logical.BackendConfig{
|
err = b.Setup(context.Background(), &logical.BackendConfig{
|
||||||
Logger: logformat.NewVaultLogger(log.LevelTrace),
|
Logger: logging.NewVaultLogger(log.Debug),
|
||||||
System: &logical.StaticSystemView{
|
System: &logical.StaticSystemView{
|
||||||
DefaultLeaseTTLVal: 300 * time.Second,
|
DefaultLeaseTTLVal: 300 * time.Second,
|
||||||
MaxLeaseTTLVal: 1800 * time.Second,
|
MaxLeaseTTLVal: 1800 * time.Second,
|
||||||
|
|
|
@ -1,114 +1,9 @@
|
||||||
package plugin
|
package plugin
|
||||||
|
|
||||||
import (
|
import hclog "github.com/hashicorp/go-hclog"
|
||||||
"net/rpc"
|
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
type LoggerClient struct {
|
|
||||||
client *rpc.Client
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) Trace(msg string, args ...interface{}) {
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
l.client.Call("Plugin.Trace", cArgs, &struct{}{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) Debug(msg string, args ...interface{}) {
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
l.client.Call("Plugin.Debug", cArgs, &struct{}{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) Info(msg string, args ...interface{}) {
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
l.client.Call("Plugin.Info", cArgs, &struct{}{})
|
|
||||||
}
|
|
||||||
func (l *LoggerClient) Warn(msg string, args ...interface{}) error {
|
|
||||||
var reply LoggerReply
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
err := l.client.Call("Plugin.Warn", cArgs, &reply)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if reply.Error != nil {
|
|
||||||
return reply.Error
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (l *LoggerClient) Error(msg string, args ...interface{}) error {
|
|
||||||
var reply LoggerReply
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
err := l.client.Call("Plugin.Error", cArgs, &reply)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if reply.Error != nil {
|
|
||||||
return reply.Error
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) Fatal(msg string, args ...interface{}) {
|
|
||||||
// NOOP since it's not actually used within vault
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) Log(level int, msg string, args []interface{}) {
|
|
||||||
cArgs := &LoggerArgs{
|
|
||||||
Level: level,
|
|
||||||
Msg: msg,
|
|
||||||
Args: args,
|
|
||||||
}
|
|
||||||
l.client.Call("Plugin.Log", cArgs, &struct{}{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) SetLevel(level int) {
|
|
||||||
l.client.Call("Plugin.SetLevel", level, &struct{}{})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) IsTrace() bool {
|
|
||||||
var reply LoggerReply
|
|
||||||
l.client.Call("Plugin.IsTrace", new(interface{}), &reply)
|
|
||||||
return reply.IsTrue
|
|
||||||
}
|
|
||||||
func (l *LoggerClient) IsDebug() bool {
|
|
||||||
var reply LoggerReply
|
|
||||||
l.client.Call("Plugin.IsDebug", new(interface{}), &reply)
|
|
||||||
return reply.IsTrue
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) IsInfo() bool {
|
|
||||||
var reply LoggerReply
|
|
||||||
l.client.Call("Plugin.IsInfo", new(interface{}), &reply)
|
|
||||||
return reply.IsTrue
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LoggerClient) IsWarn() bool {
|
|
||||||
var reply LoggerReply
|
|
||||||
l.client.Call("Plugin.IsWarn", new(interface{}), &reply)
|
|
||||||
return reply.IsTrue
|
|
||||||
}
|
|
||||||
|
|
||||||
type LoggerServer struct {
|
type LoggerServer struct {
|
||||||
logger log.Logger
|
logger hclog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error {
|
func (l *LoggerServer) Trace(args *LoggerArgs, _ *struct{}) error {
|
||||||
|
@ -127,34 +22,42 @@ func (l *LoggerServer) Info(args *LoggerArgs, _ *struct{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error {
|
func (l *LoggerServer) Warn(args *LoggerArgs, reply *LoggerReply) error {
|
||||||
err := l.logger.Warn(args.Msg, args.Args...)
|
l.logger.Warn(args.Msg, args.Args...)
|
||||||
if err != nil {
|
|
||||||
*reply = LoggerReply{
|
|
||||||
Error: wrapError(err),
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error {
|
func (l *LoggerServer) Error(args *LoggerArgs, reply *LoggerReply) error {
|
||||||
err := l.logger.Error(args.Msg, args.Args...)
|
l.logger.Error(args.Msg, args.Args...)
|
||||||
if err != nil {
|
|
||||||
*reply = LoggerReply{
|
|
||||||
Error: wrapError(err),
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error {
|
func (l *LoggerServer) Log(args *LoggerArgs, _ *struct{}) error {
|
||||||
l.logger.Log(args.Level, args.Msg, args.Args)
|
|
||||||
|
switch translateLevel(args.Level) {
|
||||||
|
|
||||||
|
case hclog.Trace:
|
||||||
|
l.logger.Trace(args.Msg, args.Args...)
|
||||||
|
|
||||||
|
case hclog.Debug:
|
||||||
|
l.logger.Debug(args.Msg, args.Args...)
|
||||||
|
|
||||||
|
case hclog.Info:
|
||||||
|
l.logger.Info(args.Msg, args.Args...)
|
||||||
|
|
||||||
|
case hclog.Warn:
|
||||||
|
l.logger.Warn(args.Msg, args.Args...)
|
||||||
|
|
||||||
|
case hclog.Error:
|
||||||
|
l.logger.Error(args.Msg, args.Args...)
|
||||||
|
|
||||||
|
case hclog.NoLevel:
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LoggerServer) SetLevel(args int, _ *struct{}) error {
|
func (l *LoggerServer) SetLevel(args int, _ *struct{}) error {
|
||||||
l.logger.SetLevel(args)
|
level := translateLevel(args)
|
||||||
|
l.logger = hclog.New(&hclog.LoggerOptions{Level: level})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,3 +105,30 @@ type LoggerReply struct {
|
||||||
IsTrue bool
|
IsTrue bool
|
||||||
Error error
|
Error error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func translateLevel(logxiLevel int) hclog.Level {
|
||||||
|
|
||||||
|
switch logxiLevel {
|
||||||
|
|
||||||
|
case 1000, 10:
|
||||||
|
// logxi.LevelAll, logxi.LevelTrace:
|
||||||
|
return hclog.Trace
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
// logxi.LevelDebug:
|
||||||
|
return hclog.Debug
|
||||||
|
|
||||||
|
case 6, 5:
|
||||||
|
// logxi.LevelInfo, logxi.LevelNotice:
|
||||||
|
return hclog.Info
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
// logxi.LevelWarn:
|
||||||
|
return hclog.Warn
|
||||||
|
|
||||||
|
case 3, 2, 1, -1:
|
||||||
|
// logxi.LevelError, logxi.LevelFatal, logxi.LevelAlert, logxi.LevelEmergency:
|
||||||
|
return hclog.Error
|
||||||
|
}
|
||||||
|
return hclog.NoLevel
|
||||||
|
}
|
||||||
|
|
|
@ -4,17 +4,15 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net/rpc"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
plugin "github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestLogger_impl(t *testing.T) {
|
plugin "github.com/hashicorp/go-plugin"
|
||||||
var _ log.Logger = new(LoggerClient)
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
}
|
)
|
||||||
|
|
||||||
func TestLogger_levels(t *testing.T) {
|
func TestLogger_levels(t *testing.T) {
|
||||||
client, server := plugin.TestRPCConn(t)
|
client, server := plugin.TestRPCConn(t)
|
||||||
|
@ -23,14 +21,14 @@ func TestLogger_levels(t *testing.T) {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
writer := bufio.NewWriter(&buf)
|
writer := bufio.NewWriter(&buf)
|
||||||
|
|
||||||
l := logformat.NewVaultLoggerWithWriter(writer, log.LevelTrace)
|
l := logging.NewVaultLoggerWithWriter(writer, hclog.Trace)
|
||||||
|
|
||||||
server.RegisterName("Plugin", &LoggerServer{
|
server.RegisterName("Plugin", &LoggerServer{
|
||||||
logger: l,
|
logger: l,
|
||||||
})
|
})
|
||||||
|
|
||||||
expected := "foobar"
|
expected := "foobar"
|
||||||
testLogger := &LoggerClient{client: client}
|
testLogger := &deprecatedLoggerClient{client: client}
|
||||||
|
|
||||||
// Test trace
|
// Test trace
|
||||||
testLogger.Trace(expected)
|
testLogger.Trace(expected)
|
||||||
|
@ -103,13 +101,13 @@ func TestLogger_isLevels(t *testing.T) {
|
||||||
client, server := plugin.TestRPCConn(t)
|
client, server := plugin.TestRPCConn(t)
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
|
|
||||||
l := logformat.NewVaultLoggerWithWriter(ioutil.Discard, log.LevelAll)
|
l := logging.NewVaultLoggerWithWriter(ioutil.Discard, hclog.Trace)
|
||||||
|
|
||||||
server.RegisterName("Plugin", &LoggerServer{
|
server.RegisterName("Plugin", &LoggerServer{
|
||||||
logger: l,
|
logger: l,
|
||||||
})
|
})
|
||||||
|
|
||||||
testLogger := &LoggerClient{client: client}
|
testLogger := &deprecatedLoggerClient{client: client}
|
||||||
|
|
||||||
if !testLogger.IsDebug() || !testLogger.IsInfo() || !testLogger.IsTrace() || !testLogger.IsWarn() {
|
if !testLogger.IsDebug() || !testLogger.IsInfo() || !testLogger.IsTrace() || !testLogger.IsWarn() {
|
||||||
t.Fatal("expected logger to return true for all logger level checks")
|
t.Fatal("expected logger to return true for all logger level checks")
|
||||||
|
@ -123,17 +121,17 @@ func TestLogger_log(t *testing.T) {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
writer := bufio.NewWriter(&buf)
|
writer := bufio.NewWriter(&buf)
|
||||||
|
|
||||||
l := logformat.NewVaultLoggerWithWriter(writer, log.LevelTrace)
|
l := logging.NewVaultLoggerWithWriter(writer, hclog.Trace)
|
||||||
|
|
||||||
server.RegisterName("Plugin", &LoggerServer{
|
server.RegisterName("Plugin", &LoggerServer{
|
||||||
logger: l,
|
logger: l,
|
||||||
})
|
})
|
||||||
|
|
||||||
expected := "foobar"
|
expected := "foobar"
|
||||||
testLogger := &LoggerClient{client: client}
|
testLogger := &deprecatedLoggerClient{client: client}
|
||||||
|
|
||||||
// Test trace
|
// Test trace 6 = logxi.LevelInfo
|
||||||
testLogger.Log(log.LevelInfo, expected, nil)
|
testLogger.Log(6, expected, nil)
|
||||||
if err := writer.Flush(); err != nil {
|
if err := writer.Flush(); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -148,16 +146,117 @@ func TestLogger_setLevel(t *testing.T) {
|
||||||
client, server := plugin.TestRPCConn(t)
|
client, server := plugin.TestRPCConn(t)
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
|
|
||||||
l := log.NewLogger(ioutil.Discard, "test-logger")
|
l := hclog.New(&hclog.LoggerOptions{Output: ioutil.Discard})
|
||||||
|
|
||||||
server.RegisterName("Plugin", &LoggerServer{
|
server.RegisterName("Plugin", &LoggerServer{
|
||||||
logger: l,
|
logger: l,
|
||||||
})
|
})
|
||||||
|
|
||||||
testLogger := &LoggerClient{client: client}
|
testLogger := &deprecatedLoggerClient{client: client}
|
||||||
testLogger.SetLevel(log.LevelWarn)
|
testLogger.SetLevel(4) // 4 == logxi.LevelWarn
|
||||||
|
|
||||||
if !testLogger.IsWarn() {
|
if !testLogger.IsWarn() {
|
||||||
t.Fatal("expected logger to support warn level")
|
t.Fatal("expected logger to support warn level")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type deprecatedLoggerClient struct {
|
||||||
|
client *rpc.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) Trace(msg string, args ...interface{}) {
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
l.client.Call("Plugin.Trace", cArgs, &struct{}{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) Debug(msg string, args ...interface{}) {
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
l.client.Call("Plugin.Debug", cArgs, &struct{}{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) Info(msg string, args ...interface{}) {
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
l.client.Call("Plugin.Info", cArgs, &struct{}{})
|
||||||
|
}
|
||||||
|
func (l *deprecatedLoggerClient) Warn(msg string, args ...interface{}) error {
|
||||||
|
var reply LoggerReply
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
err := l.client.Call("Plugin.Warn", cArgs, &reply)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if reply.Error != nil {
|
||||||
|
return reply.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (l *deprecatedLoggerClient) Error(msg string, args ...interface{}) error {
|
||||||
|
var reply LoggerReply
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
err := l.client.Call("Plugin.Error", cArgs, &reply)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if reply.Error != nil {
|
||||||
|
return reply.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) Fatal(msg string, args ...interface{}) {
|
||||||
|
// NOOP since it's not actually used within vault
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) Log(level int, msg string, args []interface{}) {
|
||||||
|
cArgs := &LoggerArgs{
|
||||||
|
Level: level,
|
||||||
|
Msg: msg,
|
||||||
|
Args: args,
|
||||||
|
}
|
||||||
|
l.client.Call("Plugin.Log", cArgs, &struct{}{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) SetLevel(level int) {
|
||||||
|
l.client.Call("Plugin.SetLevel", level, &struct{}{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) IsTrace() bool {
|
||||||
|
var reply LoggerReply
|
||||||
|
l.client.Call("Plugin.IsTrace", new(interface{}), &reply)
|
||||||
|
return reply.IsTrue
|
||||||
|
}
|
||||||
|
func (l *deprecatedLoggerClient) IsDebug() bool {
|
||||||
|
var reply LoggerReply
|
||||||
|
l.client.Call("Plugin.IsDebug", new(interface{}), &reply)
|
||||||
|
return reply.IsTrue
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) IsInfo() bool {
|
||||||
|
var reply LoggerReply
|
||||||
|
l.client.Call("Plugin.IsInfo", new(interface{}), &reply)
|
||||||
|
return reply.IsTrue
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *deprecatedLoggerClient) IsWarn() bool {
|
||||||
|
var reply LoggerReply
|
||||||
|
l.client.Call("Plugin.IsWarn", new(interface{}), &reply)
|
||||||
|
return reply.IsTrue
|
||||||
|
}
|
||||||
|
|
|
@ -4,16 +4,14 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// backendPluginClient implements logical.Backend and is the
|
// backendPluginClient implements logical.Backend and is the
|
||||||
// go-plugin client.
|
// go-plugin client.
|
||||||
type backendTracingMiddleware struct {
|
type backendTracingMiddleware struct {
|
||||||
logger log.Logger
|
logger log.Logger
|
||||||
transport string
|
|
||||||
typeStr string
|
|
||||||
|
|
||||||
next logical.Backend
|
next logical.Backend
|
||||||
}
|
}
|
||||||
|
@ -23,19 +21,19 @@ var _ logical.Backend = &backendTracingMiddleware{}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) HandleRequest(ctx context.Context, req *logical.Request) (resp *logical.Response, err error) {
|
func (b *backendTracingMiddleware) HandleRequest(ctx context.Context, req *logical.Request) (resp *logical.Response, err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.HandleRequest", "path", req.Path, "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then))
|
b.logger.Trace("handle request", "path", req.Path, "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.HandleRequest", "path", req.Path, "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("handle request", "path", req.Path, "status", "started")
|
||||||
return b.next.HandleRequest(ctx, req)
|
return b.next.HandleRequest(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) SpecialPaths() *logical.Paths {
|
func (b *backendTracingMiddleware) SpecialPaths() *logical.Paths {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.SpecialPaths", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then))
|
b.logger.Trace("special paths", "status", "finished", "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.SpecialPaths", "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("special paths", "status", "started")
|
||||||
return b.next.SpecialPaths()
|
return b.next.SpecialPaths()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,45 +47,45 @@ func (b *backendTracingMiddleware) Logger() log.Logger {
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) HandleExistenceCheck(ctx context.Context, req *logical.Request) (found bool, exists bool, err error) {
|
func (b *backendTracingMiddleware) HandleExistenceCheck(ctx context.Context, req *logical.Request) (found bool, exists bool, err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.HandleExistenceCheck", "path", req.Path, "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then))
|
b.logger.Trace("handle existence check", "path", req.Path, "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.HandleExistenceCheck", "path", req.Path, "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("handle existence check", "path", req.Path, "status", "started")
|
||||||
return b.next.HandleExistenceCheck(ctx, req)
|
return b.next.HandleExistenceCheck(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) Cleanup(ctx context.Context) {
|
func (b *backendTracingMiddleware) Cleanup(ctx context.Context) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.Cleanup", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then))
|
b.logger.Trace("cleanup", "status", "finished", "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.Cleanup", "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("cleanup", "status", "started")
|
||||||
b.next.Cleanup(ctx)
|
b.next.Cleanup(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) InvalidateKey(ctx context.Context, key string) {
|
func (b *backendTracingMiddleware) InvalidateKey(ctx context.Context, key string) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.InvalidateKey", "key", key, "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then))
|
b.logger.Trace("invalidate key", "key", key, "status", "finished", "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.InvalidateKey", "key", key, "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("invalidate key", "key", key, "status", "started")
|
||||||
b.next.InvalidateKey(ctx, key)
|
b.next.InvalidateKey(ctx, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) Setup(ctx context.Context, config *logical.BackendConfig) (err error) {
|
func (b *backendTracingMiddleware) Setup(ctx context.Context, config *logical.BackendConfig) (err error) {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.Setup", "status", "finished", "type", b.typeStr, "transport", b.transport, "err", err, "took", time.Since(then))
|
b.logger.Trace("setup", "status", "finished", "err", err, "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.Setup", "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("setup", "status", "started")
|
||||||
return b.next.Setup(ctx, config)
|
return b.next.Setup(ctx, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *backendTracingMiddleware) Type() logical.BackendType {
|
func (b *backendTracingMiddleware) Type() logical.BackendType {
|
||||||
defer func(then time.Time) {
|
defer func(then time.Time) {
|
||||||
b.logger.Trace("plugin.Type", "status", "finished", "type", b.typeStr, "transport", b.transport, "took", time.Since(then))
|
b.logger.Trace("type", "status", "finished", "took", time.Since(then))
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
|
|
||||||
b.logger.Trace("plugin.Type", "status", "started", "type", b.typeStr, "transport", b.transport)
|
b.logger.Trace("type", "status", "started")
|
||||||
return b.next.Type()
|
return b.next.Type()
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,10 +11,10 @@ import (
|
||||||
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// init registers basic structs with gob which will be used to transport complex
|
// init registers basic structs with gob which will be used to transport complex
|
||||||
|
@ -101,12 +101,14 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namedLogger := logger.Named(pluginRunner.Name)
|
||||||
|
|
||||||
var client *plugin.Client
|
var client *plugin.Client
|
||||||
var err error
|
var err error
|
||||||
if isMetadataMode {
|
if isMetadataMode {
|
||||||
client, err = pluginRunner.RunMetadataMode(ctx, sys, pluginMap, handshakeConfig, []string{}, logger)
|
client, err = pluginRunner.RunMetadataMode(ctx, sys, pluginMap, handshakeConfig, []string{}, namedLogger)
|
||||||
} else {
|
} else {
|
||||||
client, err = pluginRunner.Run(ctx, sys, pluginMap, handshakeConfig, []string{}, logger)
|
client, err = pluginRunner.Run(ctx, sys, pluginMap, handshakeConfig, []string{}, namedLogger)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -140,11 +142,9 @@ func newPluginClient(ctx context.Context, sys pluginutil.RunnerUtil, pluginRunne
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrap the backend in a tracing middleware
|
// Wrap the backend in a tracing middleware
|
||||||
if logger.IsTrace() {
|
if namedLogger.IsTrace() {
|
||||||
backend = &backendTracingMiddleware{
|
backend = &backendTracingMiddleware{
|
||||||
logger: logger,
|
logger: namedLogger.With("transport", transport),
|
||||||
transport: transport,
|
|
||||||
typeStr: pluginRunner.Name,
|
|
||||||
next: backend,
|
next: backend,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin"
|
"github.com/hashicorp/go-plugin"
|
||||||
"github.com/hashicorp/vault/helper/pluginutil"
|
"github.com/hashicorp/vault/helper/pluginutil"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
|
@ -19,7 +19,7 @@ type TLSProviderFunc func() (*tls.Config, error)
|
||||||
type ServeOpts struct {
|
type ServeOpts struct {
|
||||||
BackendFactoryFunc logical.Factory
|
BackendFactoryFunc logical.Factory
|
||||||
TLSProviderFunc TLSProviderFunc
|
TLSProviderFunc TLSProviderFunc
|
||||||
Logger hclog.Logger
|
Logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serve is a helper function used to serve a backend plugin. This
|
// Serve is a helper function used to serve a backend plugin. This
|
||||||
|
@ -27,8 +27,8 @@ type ServeOpts struct {
|
||||||
func Serve(opts *ServeOpts) error {
|
func Serve(opts *ServeOpts) error {
|
||||||
logger := opts.Logger
|
logger := opts.Logger
|
||||||
if logger == nil {
|
if logger == nil {
|
||||||
logger = hclog.New(&hclog.LoggerOptions{
|
logger = log.New(&log.LoggerOptions{
|
||||||
Level: hclog.Trace,
|
Level: log.Trace,
|
||||||
Output: os.Stderr,
|
Output: os.Stderr,
|
||||||
JSONFormat: true,
|
JSONFormat: true,
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,8 +6,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
log "github.com/mgutz/logxi/v1"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestRequest is a helper to create a purely in-memory Request struct.
|
// TestRequest is a helper to create a purely in-memory Request struct.
|
||||||
|
@ -76,10 +76,9 @@ func TestSystemView() *StaticSystemView {
|
||||||
|
|
||||||
func TestBackendConfig() *BackendConfig {
|
func TestBackendConfig() *BackendConfig {
|
||||||
bc := &BackendConfig{
|
bc := &BackendConfig{
|
||||||
Logger: logformat.NewVaultLogger(log.LevelTrace),
|
Logger: logging.NewVaultLogger(log.Trace),
|
||||||
System: TestSystemView(),
|
System: TestSystemView(),
|
||||||
}
|
}
|
||||||
bc.Logger.SetLevel(log.LevelTrace)
|
|
||||||
|
|
||||||
return bc
|
return bc
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,11 +9,11 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
"github.com/hashicorp/vault/api"
|
"github.com/hashicorp/vault/api"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/http"
|
"github.com/hashicorp/vault/http"
|
||||||
"github.com/hashicorp/vault/logical"
|
"github.com/hashicorp/vault/logical"
|
||||||
"github.com/hashicorp/vault/physical/inmem"
|
"github.com/hashicorp/vault/physical/inmem"
|
||||||
|
@ -135,7 +135,7 @@ func Test(tt TestT, c TestCase) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an in-memory Vault core
|
// Create an in-memory Vault core
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Trace)
|
||||||
|
|
||||||
phys, err := inmem.NewInmem(nil, logger)
|
phys, err := inmem.NewInmem(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -210,8 +210,8 @@ func Test(tt TestT, c TestCase) {
|
||||||
// Make requests
|
// Make requests
|
||||||
var revoke []*logical.Request
|
var revoke []*logical.Request
|
||||||
for i, s := range c.Steps {
|
for i, s := range c.Steps {
|
||||||
if log.IsWarn() {
|
if logger.IsWarn() {
|
||||||
log.Warn("Executing test step", "step_number", i+1)
|
logger.Warn("Executing test step", "step_number", i+1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the request
|
// Create the request
|
||||||
|
@ -294,8 +294,8 @@ func Test(tt TestT, c TestCase) {
|
||||||
// Revoke any secrets we might have.
|
// Revoke any secrets we might have.
|
||||||
var failedRevokes []*logical.Secret
|
var failedRevokes []*logical.Secret
|
||||||
for _, req := range revoke {
|
for _, req := range revoke {
|
||||||
if log.IsWarn() {
|
if logger.IsWarn() {
|
||||||
log.Warn("Revoking secret", "secret", fmt.Sprintf("%#v", req))
|
logger.Warn("Revoking secret", "secret", fmt.Sprintf("%#v", req))
|
||||||
}
|
}
|
||||||
req.ClientToken = client.Token()
|
req.ClientToken = client.Token()
|
||||||
resp, err := core.HandleRequest(req)
|
resp, err := core.HandleRequest(req)
|
||||||
|
@ -311,7 +311,7 @@ func Test(tt TestT, c TestCase) {
|
||||||
// Perform any rollbacks. This should no-op if there aren't any.
|
// Perform any rollbacks. This should no-op if there aren't any.
|
||||||
// We set the "immediate" flag here that any backend can pick up on
|
// We set the "immediate" flag here that any backend can pick up on
|
||||||
// to do all rollbacks immediately even if the WAL entries are new.
|
// to do all rollbacks immediately even if the WAL entries are new.
|
||||||
log.Warn("Requesting RollbackOperation")
|
logger.Warn("Requesting RollbackOperation")
|
||||||
req := logical.RollbackRequest(prefix + "/")
|
req := logical.RollbackRequest(prefix + "/")
|
||||||
req.Data["immediate"] = true
|
req.Data["immediate"] = true
|
||||||
req.ClientToken = client.Token()
|
req.ClientToken = client.Token()
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
storage "github.com/Azure/azure-sdk-for-go/storage"
|
storage "github.com/Azure/azure-sdk-for-go/storage"
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
@ -86,7 +86,7 @@ func NewAzureBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("azure: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
storage "github.com/Azure/azure-sdk-for-go/storage"
|
storage "github.com/Azure/azure-sdk-for-go/storage"
|
||||||
)
|
)
|
||||||
|
@ -29,7 +29,7 @@ func TestAzureBackend(t *testing.T) {
|
||||||
cleanupClient, _ := storage.NewBasicClient(accountName, accountKey)
|
cleanupClient, _ := storage.NewBasicClient(accountName, accountKey)
|
||||||
cleanupClient.HTTPClient = cleanhttp.DefaultPooledClient()
|
cleanupClient.HTTPClient = cleanhttp.DefaultPooledClient()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
backend, err := NewAzureBackend(map[string]string{
|
backend, err := NewAzureBackend(map[string]string{
|
||||||
"container": name,
|
"container": name,
|
||||||
|
|
|
@ -4,9 +4,9 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/golang-lru"
|
"github.com/hashicorp/golang-lru"
|
||||||
"github.com/hashicorp/vault/helper/locksutil"
|
"github.com/hashicorp/vault/helper/locksutil"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -41,8 +41,8 @@ var _ Transactional = (*TransactionalCache)(nil)
|
||||||
// NewCache returns a physical cache of the given size.
|
// NewCache returns a physical cache of the given size.
|
||||||
// If no size is provided, the default size is used.
|
// If no size is provided, the default size is used.
|
||||||
func NewCache(b Backend, size int, logger log.Logger) *Cache {
|
func NewCache(b Backend, size int, logger log.Logger) *Cache {
|
||||||
if logger.IsTrace() {
|
if logger.IsDebug() {
|
||||||
logger.Trace("physical/cache: creating LRU cache", "size", size)
|
logger.Debug("creating LRU cache", "size", size)
|
||||||
}
|
}
|
||||||
if size <= 0 {
|
if size <= 0 {
|
||||||
size = DefaultCacheSize
|
size = DefaultCacheSize
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/gocql/gocql"
|
"github.com/gocql/gocql"
|
||||||
|
@ -145,7 +145,8 @@ func NewCassandraBackend(conf map[string]string, logger log.Logger) (physical.Ba
|
||||||
impl := &CassandraBackend{
|
impl := &CassandraBackend{
|
||||||
sess: sess,
|
sess: sess,
|
||||||
table: table,
|
table: table,
|
||||||
logger: logger}
|
logger: logger,
|
||||||
|
}
|
||||||
return impl, nil
|
return impl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gocql/gocql"
|
"github.com/gocql/gocql"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v3"
|
dockertest "gopkg.in/ory-am/dockertest.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ func TestCassandraBackend(t *testing.T) {
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
// Run vault tests
|
// Run vault tests
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
b, err := NewCassandraBackend(map[string]string{
|
b, err := NewCassandraBackend(map[string]string{
|
||||||
"hosts": hosts,
|
"hosts": hosts,
|
||||||
"protocol_version": "3",
|
"protocol_version": "3",
|
||||||
|
|
|
@ -12,9 +12,9 @@ import (
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/cockroachdb/cockroach-go/crdb"
|
"github.com/cockroachdb/cockroach-go/crdb"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
// CockroachDB uses the Postgres SQL driver
|
// CockroachDB uses the Postgres SQL driver
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
|
@ -58,7 +58,7 @@ func NewCockroachDBBackend(conf map[string]string, logger log.Logger) (physical.
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("cockroachdb: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@ import (
|
||||||
|
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v3"
|
dockertest "gopkg.in/ory-am/dockertest.v3"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
@ -72,7 +72,7 @@ func TestCockroachDBBackend(t *testing.T) {
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
// Run vault tests
|
// Run vault tests
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewCockroachDBBackend(map[string]string{
|
b, err := NewCockroachDBBackend(map[string]string{
|
||||||
"connection_url": connURL,
|
"connection_url": connURL,
|
||||||
|
|
|
@ -17,7 +17,7 @@ import (
|
||||||
|
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
|
@ -110,16 +110,16 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
path = "vault/"
|
path = "vault/"
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config path set", "path", path)
|
logger.Debug("config path set", "path", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure path is suffixed but not prefixed
|
// Ensure path is suffixed but not prefixed
|
||||||
if !strings.HasSuffix(path, "/") {
|
if !strings.HasSuffix(path, "/") {
|
||||||
logger.Warn("physical/consul: appending trailing forward slash to path")
|
logger.Warn("appending trailing forward slash to path")
|
||||||
path += "/"
|
path += "/"
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(path, "/") {
|
if strings.HasPrefix(path, "/") {
|
||||||
logger.Warn("physical/consul: trimming path of its forward slash")
|
logger.Warn("trimming path of its forward slash")
|
||||||
path = strings.TrimPrefix(path, "/")
|
path = strings.TrimPrefix(path, "/")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
disableRegistration = b
|
disableRegistration = b
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config disable_registration set", "disable_registration", disableRegistration)
|
logger.Debug("config disable_registration set", "disable_registration", disableRegistration)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the service name to advertise in Consul
|
// Get the service name to advertise in Consul
|
||||||
|
@ -146,13 +146,13 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
return nil, errors.New("service name must be valid per RFC 1123 and can contain only alphanumeric characters or dashes")
|
return nil, errors.New("service name must be valid per RFC 1123 and can contain only alphanumeric characters or dashes")
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config service set", "service", service)
|
logger.Debug("config service set", "service", service)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the additional tags to attach to the registered service name
|
// Get the additional tags to attach to the registered service name
|
||||||
tags := conf["service_tags"]
|
tags := conf["service_tags"]
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config service_tags set", "service_tags", tags)
|
logger.Debug("config service_tags set", "service_tags", tags)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the service-specific address to override the use of the HA redirect address
|
// Get the service-specific address to override the use of the HA redirect address
|
||||||
|
@ -162,7 +162,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
serviceAddr = &serviceAddrStr
|
serviceAddr = &serviceAddrStr
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config service_address set", "service_address", serviceAddr)
|
logger.Debug("config service_address set", "service_address", serviceAddr)
|
||||||
}
|
}
|
||||||
|
|
||||||
checkTimeout := defaultCheckTimeout
|
checkTimeout := defaultCheckTimeout
|
||||||
|
@ -180,7 +180,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
|
|
||||||
checkTimeout = d
|
checkTimeout = d
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config check_timeout set", "check_timeout", d)
|
logger.Debug("config check_timeout set", "check_timeout", d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,18 +192,18 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
if addr, ok := conf["address"]; ok {
|
if addr, ok := conf["address"]; ok {
|
||||||
consulConf.Address = addr
|
consulConf.Address = addr
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config address set", "address", addr)
|
logger.Debug("config address set", "address", addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if scheme, ok := conf["scheme"]; ok {
|
if scheme, ok := conf["scheme"]; ok {
|
||||||
consulConf.Scheme = scheme
|
consulConf.Scheme = scheme
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: config scheme set", "scheme", scheme)
|
logger.Debug("config scheme set", "scheme", scheme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if token, ok := conf["token"]; ok {
|
if token, ok := conf["token"]; ok {
|
||||||
consulConf.Token = token
|
consulConf.Token = token
|
||||||
logger.Debug("physical/consul: config token set")
|
logger.Debug("config token set")
|
||||||
}
|
}
|
||||||
|
|
||||||
if consulConf.Scheme == "https" {
|
if consulConf.Scheme == "https" {
|
||||||
|
@ -216,7 +216,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
if err := http2.ConfigureTransport(consulConf.Transport); err != nil {
|
if err := http2.ConfigureTransport(consulConf.Transport); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
logger.Debug("physical/consul: configured TLS")
|
logger.Debug("configured TLS")
|
||||||
}
|
}
|
||||||
|
|
||||||
consulConf.HttpClient = &http.Client{Transport: consulConf.Transport}
|
consulConf.HttpClient = &http.Client{Transport: consulConf.Transport}
|
||||||
|
@ -233,7 +233,7 @@ func NewConsulBackend(conf map[string]string, logger log.Logger) (physical.Backe
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("physical/consul: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ func (c *ConsulBackend) NotifyActiveStateChange() error {
|
||||||
default:
|
default:
|
||||||
// NOTE: If this occurs Vault's active status could be out of
|
// NOTE: If this occurs Vault's active status could be out of
|
||||||
// sync with Consul until reconcileTimer expires.
|
// sync with Consul until reconcileTimer expires.
|
||||||
c.logger.Warn("physical/consul: Concurrent state change notify dropped")
|
c.logger.Warn("concurrent state change notify dropped")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -556,7 +556,7 @@ func (c *ConsulBackend) NotifySealedStateChange() error {
|
||||||
default:
|
default:
|
||||||
// NOTE: If this occurs Vault's sealed status could be out of
|
// NOTE: If this occurs Vault's sealed status could be out of
|
||||||
// sync with Consul until checkTimer expires.
|
// sync with Consul until checkTimer expires.
|
||||||
c.logger.Warn("physical/consul: Concurrent sealed state change notify dropped")
|
c.logger.Warn("concurrent sealed state change notify dropped")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -629,7 +629,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
|
||||||
serviceID, err := c.reconcileConsul(registeredServiceID, activeFunc, sealedFunc)
|
serviceID, err := c.reconcileConsul(registeredServiceID, activeFunc, sealedFunc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if c.logger.IsWarn() {
|
if c.logger.IsWarn() {
|
||||||
c.logger.Warn("physical/consul: reconcile unable to talk with Consul backend", "error", err)
|
c.logger.Warn("reconcile unable to talk with Consul backend", "error", err)
|
||||||
}
|
}
|
||||||
time.Sleep(consulRetryInterval)
|
time.Sleep(consulRetryInterval)
|
||||||
continue
|
continue
|
||||||
|
@ -655,7 +655,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
|
||||||
sealed := sealedFunc()
|
sealed := sealedFunc()
|
||||||
if err := c.runCheck(sealed); err != nil {
|
if err := c.runCheck(sealed); err != nil {
|
||||||
if c.logger.IsWarn() {
|
if c.logger.IsWarn() {
|
||||||
c.logger.Warn("physical/consul: check unable to talk with Consul backend", "error", err)
|
c.logger.Warn("check unable to talk with Consul backend", "error", err)
|
||||||
}
|
}
|
||||||
time.Sleep(consulRetryInterval)
|
time.Sleep(consulRetryInterval)
|
||||||
continue
|
continue
|
||||||
|
@ -665,7 +665,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
case <-shutdownCh:
|
case <-shutdownCh:
|
||||||
c.logger.Info("physical/consul: Shutting down consul backend")
|
c.logger.Info("shutting down consul backend")
|
||||||
shutdown = true
|
shutdown = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -674,7 +674,7 @@ func (c *ConsulBackend) runEventDemuxer(waitGroup *sync.WaitGroup, shutdownCh ph
|
||||||
defer c.serviceLock.RUnlock()
|
defer c.serviceLock.RUnlock()
|
||||||
if err := c.client.Agent().ServiceDeregister(registeredServiceID); err != nil {
|
if err := c.client.Agent().ServiceDeregister(registeredServiceID); err != nil {
|
||||||
if c.logger.IsWarn() {
|
if c.logger.IsWarn() {
|
||||||
c.logger.Warn("physical/consul: service deregistration failed", "error", err)
|
c.logger.Warn("service deregistration failed", "error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,10 +9,10 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/consul/api"
|
"github.com/hashicorp/consul/api"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v2"
|
dockertest "gopkg.in/ory-am/dockertest.v2"
|
||||||
|
@ -36,7 +36,7 @@ func testConsulBackend(t *testing.T) *ConsulBackend {
|
||||||
}
|
}
|
||||||
|
|
||||||
func testConsulBackendConfig(t *testing.T, conf *consulConf) *ConsulBackend {
|
func testConsulBackendConfig(t *testing.T, conf *consulConf) *ConsulBackend {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
be, err := NewConsulBackend(*conf, logger)
|
be, err := NewConsulBackend(*conf, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -93,7 +93,7 @@ func TestConsul_ServiceTags(t *testing.T) {
|
||||||
"max_parallel": "4",
|
"max_parallel": "4",
|
||||||
"disable_registration": "false",
|
"disable_registration": "false",
|
||||||
}
|
}
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
be, err := NewConsulBackend(consulConfig, logger)
|
be, err := NewConsulBackend(consulConfig, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -138,7 +138,7 @@ func TestConsul_ServiceAddress(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
be, err := NewConsulBackend(test.consulConfig, logger)
|
be, err := NewConsulBackend(test.consulConfig, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -226,7 +226,7 @@ func TestConsul_newConsulBackend(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
be, err := NewConsulBackend(test.consulConfig, logger)
|
be, err := NewConsulBackend(test.consulConfig, logger)
|
||||||
if test.fail {
|
if test.fail {
|
||||||
|
@ -425,7 +425,7 @@ func TestConsul_serviceID(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
be, err := NewConsulBackend(consulConf{
|
be, err := NewConsulBackend(consulConf{
|
||||||
|
@ -482,7 +482,7 @@ func TestConsulBackend(t *testing.T) {
|
||||||
client.KV().DeleteTree(randPath, nil)
|
client.KV().DeleteTree(randPath, nil)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewConsulBackend(map[string]string{
|
b, err := NewConsulBackend(map[string]string{
|
||||||
"address": conf.Address,
|
"address": conf.Address,
|
||||||
|
@ -523,7 +523,7 @@ func TestConsulHABackend(t *testing.T) {
|
||||||
client.KV().DeleteTree(randPath, nil)
|
client.KV().DeleteTree(randPath, nil)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewConsulBackend(map[string]string{
|
b, err := NewConsulBackend(map[string]string{
|
||||||
"address": conf.Address,
|
"address": conf.Address,
|
||||||
|
|
|
@ -16,8 +16,8 @@ import (
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CouchDBBackend allows the management of couchdb users
|
// CouchDBBackend allows the management of couchdb users
|
||||||
|
@ -177,7 +177,7 @@ func buildCouchDBBackend(conf map[string]string, logger log.Logger) (*CouchDBBac
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("couchdb: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v3"
|
dockertest "gopkg.in/ory-am/dockertest.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ func TestCouchDBBackend(t *testing.T) {
|
||||||
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
|
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewCouchDBBackend(map[string]string{
|
b, err := NewCouchDBBackend(map[string]string{
|
||||||
"endpoint": endpoint,
|
"endpoint": endpoint,
|
||||||
|
@ -38,7 +38,7 @@ func TestTransactionalCouchDBBackend(t *testing.T) {
|
||||||
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
|
cleanup, endpoint, username, password := prepareCouchdbDBTestContainer(t)
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewTransactionalCouchDBBackend(map[string]string{
|
b, err := NewTransactionalCouchDBBackend(map[string]string{
|
||||||
"endpoint": endpoint,
|
"endpoint": endpoint,
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
|
|
@ -8,9 +8,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
dockertest "gopkg.in/ory-am/dockertest.v3"
|
dockertest "gopkg.in/ory-am/dockertest.v3"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
@ -48,7 +48,7 @@ func TestDynamoDBBackend(t *testing.T) {
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewDynamoDBBackend(map[string]string{
|
b, err := NewDynamoDBBackend(map[string]string{
|
||||||
"access_key": creds.AccessKeyID,
|
"access_key": creds.AccessKeyID,
|
||||||
|
@ -95,7 +95,7 @@ func TestDynamoDBHABackend(t *testing.T) {
|
||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
b, err := NewDynamoDBBackend(map[string]string{
|
b, err := NewDynamoDBBackend(map[string]string{
|
||||||
"access_key": creds.AccessKeyID,
|
"access_key": creds.AccessKeyID,
|
||||||
"secret_key": creds.SecretAccessKey,
|
"secret_key": creds.SecretAccessKey,
|
||||||
|
|
|
@ -10,8 +10,8 @@ import (
|
||||||
|
|
||||||
"github.com/coreos/etcd/client"
|
"github.com/coreos/etcd/client"
|
||||||
"github.com/coreos/go-semver/semver"
|
"github.com/coreos/go-semver/semver"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -14,8 +14,8 @@ import (
|
||||||
metrics "github.com/armon/go-metrics"
|
metrics "github.com/armon/go-metrics"
|
||||||
"github.com/coreos/etcd/client"
|
"github.com/coreos/etcd/client"
|
||||||
"github.com/coreos/etcd/pkg/transport"
|
"github.com/coreos/etcd/pkg/transport"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -14,9 +14,9 @@ import (
|
||||||
"github.com/coreos/etcd/clientv3"
|
"github.com/coreos/etcd/clientv3"
|
||||||
"github.com/coreos/etcd/clientv3/concurrency"
|
"github.com/coreos/etcd/clientv3/concurrency"
|
||||||
"github.com/coreos/etcd/pkg/transport"
|
"github.com/coreos/etcd/pkg/transport"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEtcd3Backend(t *testing.T) {
|
func TestEtcd3Backend(t *testing.T) {
|
||||||
|
@ -17,7 +17,7 @@ func TestEtcd3Backend(t *testing.T) {
|
||||||
t.Skipf("Skipped. No etcd3 server found")
|
t.Skipf("Skipped. No etcd3 server found")
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewEtcdBackend(map[string]string{
|
b, err := NewEtcdBackend(map[string]string{
|
||||||
"path": fmt.Sprintf("/vault-%d", time.Now().Unix()),
|
"path": fmt.Sprintf("/vault-%d", time.Now().Unix()),
|
||||||
|
|
|
@ -6,9 +6,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
"github.com/coreos/etcd/client"
|
"github.com/coreos/etcd/client"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
|
@ -51,7 +51,7 @@ func TestEtcdBackend(t *testing.T) {
|
||||||
|
|
||||||
// Generate new etcd backend. The etcd address is read from ETCD_ADDR. No
|
// Generate new etcd backend. The etcd address is read from ETCD_ADDR. No
|
||||||
// need to provide it explicitly.
|
// need to provide it explicitly.
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewEtcdBackend(map[string]string{
|
b, err := NewEtcdBackend(map[string]string{
|
||||||
"path": randPath,
|
"path": randPath,
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/consts"
|
"github.com/hashicorp/vault/helper/consts"
|
||||||
"github.com/hashicorp/vault/helper/jsonutil"
|
"github.com/hashicorp/vault/helper/jsonutil"
|
||||||
|
|
|
@ -9,9 +9,9 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFileBackend_Base64URLEncoding(t *testing.T) {
|
func TestFileBackend_Base64URLEncoding(t *testing.T) {
|
||||||
|
@ -21,7 +21,7 @@ func TestFileBackend_Base64URLEncoding(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(backendPath)
|
defer os.RemoveAll(backendPath)
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewFileBackend(map[string]string{
|
b, err := NewFileBackend(map[string]string{
|
||||||
"path": backendPath,
|
"path": backendPath,
|
||||||
|
@ -140,7 +140,7 @@ func TestFileBackend_ValidatePath(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewFileBackend(map[string]string{
|
b, err := NewFileBackend(map[string]string{
|
||||||
"path": dir,
|
"path": dir,
|
||||||
|
@ -164,7 +164,7 @@ func TestFileBackend(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewFileBackend(map[string]string{
|
b, err := NewFileBackend(map[string]string{
|
||||||
"path": dir,
|
"path": dir,
|
||||||
|
|
|
@ -11,9 +11,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/useragent"
|
"github.com/hashicorp/vault/helper/useragent"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
"cloud.google.com/go/storage"
|
"cloud.google.com/go/storage"
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
|
@ -108,6 +108,7 @@ func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errwrap.Wrapf("failed to parse chunk_size: {{err}}", err)
|
return nil, errwrap.Wrapf("failed to parse chunk_size: {{err}}", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Values are specified as kb, but the API expects them as bytes.
|
// Values are specified as kb, but the API expects them as bytes.
|
||||||
chunkSize = chunkSize * 1024
|
chunkSize = chunkSize * 1024
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"cloud.google.com/go/storage"
|
"cloud.google.com/go/storage"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ func TestHABackend(t *testing.T) {
|
||||||
backend, err := NewBackend(map[string]string{
|
backend, err := NewBackend(map[string]string{
|
||||||
"bucket": bucket,
|
"bucket": bucket,
|
||||||
"ha_enabled": "true",
|
"ha_enabled": "true",
|
||||||
}, logformat.NewVaultLogger(log.LevelTrace))
|
}, logging.NewVaultLogger(log.Trace))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,9 +8,9 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"cloud.google.com/go/storage"
|
"cloud.google.com/go/storage"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"google.golang.org/api/googleapi"
|
"google.golang.org/api/googleapi"
|
||||||
)
|
)
|
||||||
|
@ -52,7 +52,7 @@ func TestBackend(t *testing.T) {
|
||||||
backend, err := NewBackend(map[string]string{
|
backend, err := NewBackend(map[string]string{
|
||||||
"bucket": bucket,
|
"bucket": bucket,
|
||||||
"ha_enabled": "false",
|
"ha_enabled": "false",
|
||||||
}, logformat.NewVaultLogger(log.LevelTrace))
|
}, logging.NewVaultLogger(log.Trace))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,13 +4,13 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCache(t *testing.T) {
|
func TestCache(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inm, err := NewInmem(nil, logger)
|
inm, err := NewInmem(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -22,7 +22,7 @@ func TestCache(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCache_Purge(t *testing.T) {
|
func TestCache_Purge(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inm, err := NewInmem(nil, logger)
|
inm, err := NewInmem(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -69,7 +69,7 @@ func TestCache_Purge(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCache_Disable(t *testing.T) {
|
func TestCache_Disable(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inm, err := NewInmem(nil, logger)
|
inm, err := NewInmem(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -7,8 +7,8 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
"github.com/armon/go-radix"
|
"github.com/armon/go-radix"
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,8 +4,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type InmemHABackend struct {
|
type InmemHABackend struct {
|
||||||
|
|
|
@ -3,13 +3,13 @@ package inmem
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInmemHA(t *testing.T) {
|
func TestInmemHA(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inm, err := NewInmemHA(nil, logger)
|
inm, err := NewInmemHA(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -3,13 +3,13 @@ package inmem
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInmem(t *testing.T) {
|
func TestInmem(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
inm, err := NewInmem(nil, logger)
|
inm, err := NewInmem(nil, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,9 +4,9 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPhysicalView_impl(t *testing.T) {
|
func TestPhysicalView_impl(t *testing.T) {
|
||||||
|
@ -14,7 +14,7 @@ func TestPhysicalView_impl(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInmemTestBackend() (physical.Backend, error) {
|
func newInmemTestBackend() (physical.Backend, error) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
return NewInmem(nil, logger)
|
return NewInmem(nil, logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
radix "github.com/armon/go-radix"
|
radix "github.com/armon/go-radix"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type faultyPseudo struct {
|
type faultyPseudo struct {
|
||||||
|
@ -70,7 +70,7 @@ func newFaultyPseudo(logger log.Logger, faultyPaths []string) *faultyPseudo {
|
||||||
underlying: InmemBackend{
|
underlying: InmemBackend{
|
||||||
root: radix.New(),
|
root: radix.New(),
|
||||||
permitPool: physical.NewPermitPool(1),
|
permitPool: physical.NewPermitPool(1),
|
||||||
logger: logger,
|
logger: logger.Named("storage.inmembackend"),
|
||||||
},
|
},
|
||||||
faultyPaths: make(map[string]struct{}, len(faultyPaths)),
|
faultyPaths: make(map[string]struct{}, len(faultyPaths)),
|
||||||
}
|
}
|
||||||
|
@ -81,21 +81,21 @@ func newFaultyPseudo(logger log.Logger, faultyPaths []string) *faultyPseudo {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPseudo_Basic(t *testing.T) {
|
func TestPseudo_Basic(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
p := newFaultyPseudo(logger, nil)
|
p := newFaultyPseudo(logger, nil)
|
||||||
physical.ExerciseBackend(t, p)
|
physical.ExerciseBackend(t, p)
|
||||||
physical.ExerciseBackend_ListPrefix(t, p)
|
physical.ExerciseBackend_ListPrefix(t, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPseudo_SuccessfulTransaction(t *testing.T) {
|
func TestPseudo_SuccessfulTransaction(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
p := newFaultyPseudo(logger, nil)
|
p := newFaultyPseudo(logger, nil)
|
||||||
|
|
||||||
physical.ExerciseTransactionalBackend(t, p)
|
physical.ExerciseTransactionalBackend(t, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPseudo_FailedTransaction(t *testing.T) {
|
func TestPseudo_FailedTransaction(t *testing.T) {
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
p := newFaultyPseudo(logger, []string{"zip"})
|
p := newFaultyPseudo(logger, []string{"zip"})
|
||||||
|
|
||||||
txns := physical.SetupTestingTransactions(t, p)
|
txns := physical.SetupTestingTransactions(t, p)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -37,7 +37,7 @@ func NewLatencyInjector(b Backend, latency time.Duration, jitter int, logger log
|
||||||
if jitter < 0 || jitter > 100 {
|
if jitter < 0 || jitter > 100 {
|
||||||
jitter = DefaultJitterPercent
|
jitter = DefaultJitterPercent
|
||||||
}
|
}
|
||||||
logger.Info("physical/latency: creating latency injector")
|
logger.Info("creating latency injector")
|
||||||
|
|
||||||
return &LatencyInjector{
|
return &LatencyInjector{
|
||||||
backend: b,
|
backend: b,
|
||||||
|
|
|
@ -14,12 +14,12 @@ import (
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
"github.com/joyent/triton-go"
|
"github.com/joyent/triton-go"
|
||||||
"github.com/joyent/triton-go/authentication"
|
"github.com/joyent/triton-go/authentication"
|
||||||
"github.com/joyent/triton-go/errors"
|
"github.com/joyent/triton-go/errors"
|
||||||
"github.com/joyent/triton-go/storage"
|
"github.com/joyent/triton-go/storage"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const mantaDefaultRootStore = "/stor"
|
const mantaDefaultRootStore = "/stor"
|
||||||
|
@ -74,7 +74,7 @@ func NewMantaBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("manta: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,13 +9,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
"github.com/joyent/triton-go"
|
"github.com/joyent/triton-go"
|
||||||
"github.com/joyent/triton-go/authentication"
|
"github.com/joyent/triton-go/authentication"
|
||||||
tt "github.com/joyent/triton-go/errors"
|
tt "github.com/joyent/triton-go/errors"
|
||||||
"github.com/joyent/triton-go/storage"
|
"github.com/joyent/triton-go/storage"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMantaBackend(t *testing.T) {
|
func TestMantaBackend(t *testing.T) {
|
||||||
|
@ -49,11 +49,11 @@ func TestMantaBackend(t *testing.T) {
|
||||||
t.Fatalf("failed initialising Storage client: %s", err.Error())
|
t.Fatalf("failed initialising Storage client: %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
mb := &MantaBackend{
|
mb := &MantaBackend{
|
||||||
client: client,
|
client: client,
|
||||||
directory: testHarnessBucket,
|
directory: testHarnessBucket,
|
||||||
logger: logger,
|
logger: logger.Named("storage.mantabackend"),
|
||||||
permitPool: physical.NewPermitPool(128),
|
permitPool: physical.NewPermitPool(128),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@ import (
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
_ "github.com/denisenkom/go-mssqldb"
|
_ "github.com/denisenkom/go-mssqldb"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Verify MSSQLBackend satisfies the correct interfaces
|
// Verify MSSQLBackend satisfies the correct interfaces
|
||||||
|
@ -53,7 +53,7 @@ func NewMSSQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("mysql: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
maxParInt = physical.DefaultParallelOperations
|
maxParInt = physical.DefaultParallelOperations
|
||||||
|
|
|
@ -4,9 +4,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
_ "github.com/denisenkom/go-mssqldb"
|
_ "github.com/denisenkom/go-mssqldb"
|
||||||
)
|
)
|
||||||
|
@ -31,7 +31,7 @@ func TestMSSQLBackend(t *testing.T) {
|
||||||
password := os.Getenv("MSSQL_PASSWORD")
|
password := os.Getenv("MSSQL_PASSWORD")
|
||||||
|
|
||||||
// Run vault tests
|
// Run vault tests
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewMSSQLBackend(map[string]string{
|
b, err := NewMSSQLBackend(map[string]string{
|
||||||
"server": server,
|
"server": server,
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
mysql "github.com/go-sql-driver/mysql"
|
mysql "github.com/go-sql-driver/mysql"
|
||||||
|
@ -79,7 +79,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_idle_connections parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_idle_connections parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("mysql: max_idle_connections set", "max_idle_connections", maxIdleConnInt)
|
logger.Debug("max_idle_connections set", "max_idle_connections", maxIdleConnInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_connection_lifetime parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_connection_lifetime parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("mysql: max_connection_lifetime set", "max_connection_lifetime", maxConnLifeInt)
|
logger.Debug("max_connection_lifetime set", "max_connection_lifetime", maxConnLifeInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ func NewMySQLBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("mysql: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
maxParInt = physical.DefaultParallelOperations
|
maxParInt = physical.DefaultParallelOperations
|
||||||
|
|
|
@ -4,9 +4,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
)
|
)
|
||||||
|
@ -31,7 +31,7 @@ func TestMySQLBackend(t *testing.T) {
|
||||||
password := os.Getenv("MYSQL_PASSWORD")
|
password := os.Getenv("MYSQL_PASSWORD")
|
||||||
|
|
||||||
// Run vault tests
|
// Run vault tests
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewMySQLBackend(map[string]string{
|
b, err := NewMySQLBackend(map[string]string{
|
||||||
"address": address,
|
"address": address,
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DefaultParallelOperations = 128
|
const DefaultParallelOperations = 128
|
||||||
|
|
|
@ -10,7 +10,8 @@ import (
|
||||||
|
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
//log "github.com/hashicorp/go-hclog"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
@ -56,7 +57,7 @@ func NewPostgreSQLBackend(conf map[string]string, logger log.Logger) (physical.B
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("postgres: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
maxParInt = physical.DefaultParallelOperations
|
maxParInt = physical.DefaultParallelOperations
|
||||||
|
|
|
@ -4,9 +4,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
@ -23,7 +23,7 @@ func TestPostgreSQLBackend(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run vault tests
|
// Run vault tests
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
b, err := NewPostgreSQLBackend(map[string]string{
|
b, err := NewPostgreSQLBackend(map[string]string{
|
||||||
"connection_url": connURL,
|
"connection_url": connURL,
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
@ -131,7 +131,7 @@ func NewS3Backend(conf map[string]string, logger log.Logger) (physical.Backend,
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("s3: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,10 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/awsutil"
|
"github.com/hashicorp/vault/helper/awsutil"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
|
@ -79,7 +79,7 @@ func TestS3Backend(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logger := logformat.NewVaultLogger(log.LevelTrace)
|
logger := logging.NewVaultLogger(log.Debug)
|
||||||
|
|
||||||
// This uses the same logic to find the AWS credentials as we did at the beginning of the test
|
// This uses the same logic to find the AWS credentials as we did at the beginning of the test
|
||||||
b, err := NewS3Backend(map[string]string{
|
b, err := NewS3Backend(map[string]string{
|
||||||
|
|
|
@ -10,10 +10,10 @@ import (
|
||||||
|
|
||||||
metrics "github.com/armon/go-metrics"
|
metrics "github.com/armon/go-metrics"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
log "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/vault/helper/strutil"
|
"github.com/hashicorp/vault/helper/strutil"
|
||||||
"github.com/hashicorp/vault/helper/useragent"
|
"github.com/hashicorp/vault/helper/useragent"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"google.golang.org/api/iterator"
|
"google.golang.org/api/iterator"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
@ -94,7 +94,7 @@ type Backend struct {
|
||||||
// configuration. This uses the official Golang Cloud SDK and therefore supports
|
// configuration. This uses the official Golang Cloud SDK and therefore supports
|
||||||
// specifying credentials via envvars, credential files, etc.
|
// specifying credentials via envvars, credential files, etc.
|
||||||
func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error) {
|
func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error) {
|
||||||
logger.Debug("physical/spanner: configuring backend")
|
logger.Debug("configuring backend")
|
||||||
|
|
||||||
// Database name
|
// Database name
|
||||||
database := os.Getenv(envDatabase)
|
database := os.Getenv(envDatabase)
|
||||||
|
@ -143,14 +143,14 @@ func NewBackend(c map[string]string, logger log.Logger) (physical.Backend, error
|
||||||
return nil, errwrap.Wrapf("failed to parse max_parallel: {{err}}", err)
|
return nil, errwrap.Wrapf("failed to parse max_parallel: {{err}}", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug("physical/spanner: configuration",
|
logger.Debug("configuration",
|
||||||
"database", database,
|
"database", database,
|
||||||
"table", table,
|
"table", table,
|
||||||
"haEnabled", haEnabled,
|
"haEnabled", haEnabled,
|
||||||
"haTable", haTable,
|
"haTable", haTable,
|
||||||
"maxParallel", maxParallel,
|
"maxParallel", maxParallel,
|
||||||
)
|
)
|
||||||
logger.Debug("physical/spanner: creating client")
|
logger.Debug("creating client")
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
client, err := spanner.NewClient(ctx, database,
|
client, err := spanner.NewClient(ctx, database,
|
||||||
|
|
|
@ -5,9 +5,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"cloud.google.com/go/spanner"
|
"cloud.google.com/go/spanner"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ func TestHABackend(t *testing.T) {
|
||||||
"table": table,
|
"table": table,
|
||||||
"ha_table": haTable,
|
"ha_table": haTable,
|
||||||
"ha_enabled": "true",
|
"ha_enabled": "true",
|
||||||
}, logformat.NewVaultLogger(log.LevelTrace))
|
}, logging.NewVaultLogger(log.Debug))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"cloud.google.com/go/spanner"
|
"cloud.google.com/go/spanner"
|
||||||
"github.com/hashicorp/vault/helper/logformat"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/vault/helper/logging"
|
||||||
"github.com/hashicorp/vault/physical"
|
"github.com/hashicorp/vault/physical"
|
||||||
log "github.com/mgutz/logxi/v1"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ func TestBackend(t *testing.T) {
|
||||||
"database": database,
|
"database": database,
|
||||||
"table": table,
|
"table": table,
|
||||||
"ha_enabled": "false",
|
"ha_enabled": "false",
|
||||||
}, logformat.NewVaultLogger(log.LevelTrace))
|
}, logging.NewVaultLogger(log.Debug))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
log "github.com/mgutz/logxi/v1"
|
log "github.com/hashicorp/go-hclog"
|
||||||
|
|
||||||
"github.com/armon/go-metrics"
|
"github.com/armon/go-metrics"
|
||||||
"github.com/hashicorp/errwrap"
|
"github.com/hashicorp/errwrap"
|
||||||
|
@ -113,7 +113,7 @@ func NewSwiftBackend(conf map[string]string, logger log.Logger) (physical.Backen
|
||||||
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
return nil, errwrap.Wrapf("failed parsing max_parallel parameter: {{err}}", err)
|
||||||
}
|
}
|
||||||
if logger.IsDebug() {
|
if logger.IsDebug() {
|
||||||
logger.Debug("swift: max_parallel set", "max_parallel", maxParInt)
|
logger.Debug("max_parallel set", "max_parallel", maxParInt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue