Remove unneeded hclog dependencies as we move forward with events (#1433)

This commit is contained in:
Jim authored and GitHub committed 2021-08-01 14:41:13 -04:00
1 parent df42c71881
commit 68dd2a66ba
43 files changed
+147 -421

No files matched your search

@@ -88,7 +88,6 @@ func TestFetchActionSetForId(t *testing.T) {
req := require.New(t)
ctx := auth.NewVerifierContext(
context.Background(),
tc.Logger(),
iamRepoFn,
authTokenRepoFn,
serversRepoFn,
+1 -1
View File
@@ -332,7 +332,7 @@ func (b *Server) createInitialOidcAuthMethod(ctx context.Context) (*oidc.AuthMet
if err != nil {
return nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, fmt.Errorf("error creating kms cache: %w", err)
}
+5 -5
View File
@@ -23,7 +23,7 @@ func (b *Server) CreateInitialLoginRole(ctx context.Context) (*iam.Role, error)
if err != nil {
return nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, fmt.Errorf("error creating kms cache: %w", err)
}
@@ -80,7 +80,7 @@ func (b *Server) CreateInitialPasswordAuthMethod(ctx context.Context) (*password
if err != nil {
return nil, nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, nil, fmt.Errorf("error creating kms cache: %w", err)
}
@@ -278,7 +278,7 @@ func (b *Server) CreateInitialScopes(ctx context.Context) (*iam.Scope, *iam.Scop
if err != nil {
return nil, nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, nil, fmt.Errorf("error creating kms cache: %w", err)
}
@@ -358,7 +358,7 @@ func (b *Server) CreateInitialHostResources(ctx context.Context) (*static.HostCa
if err != nil {
return nil, nil, nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, nil, nil, fmt.Errorf("error creating kms cache: %w", err)
}
@@ -468,7 +468,7 @@ func (b *Server) CreateInitialTarget(ctx context.Context) (target.Target, error)
if err != nil {
return nil, fmt.Errorf("error creating kms repository: %w", err)
}
kmsCache, err := kms.NewKms(kmsRepo, kms.WithLogger(b.Logger.Named("kms")))
kmsCache, err := kms.NewKms(kmsRepo)
if err != nil {
return nil, fmt.Errorf("error creating kms cache: %w", err)
}
+6 -11
View File
@@ -5,7 +5,6 @@ import (
"fmt"
"net"
"net/http"
"os"
"strings"
"time"
@@ -14,7 +13,6 @@ import (
_ "crypto/sha512"
"github.com/hashicorp/boundary/internal/libs/alpnmux"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-secure-stdlib/listenerutil"
"github.com/hashicorp/go-secure-stdlib/reloadutil"
"github.com/mitchellh/cli"
@@ -39,7 +37,7 @@ type WorkerAuthInfo struct {
}
// Factory is the factory function to create a listener.
type ListenerFactory func(string, *listenerutil.ListenerConfig, hclog.Logger, cli.Ui) (string, net.Listener, error)
type ListenerFactory func(string, *listenerutil.ListenerConfig, cli.Ui) (string, net.Listener, error)
// BuiltinListeners is the list of built-in listener types.
var BuiltinListeners = map[string]ListenerFactory{
@@ -49,7 +47,7 @@ var BuiltinListeners = map[string]ListenerFactory{
// New creates a new listener of the given type with the given
// configuration. The type is looked up in the BuiltinListeners map.
func NewListener(l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui) (*alpnmux.ALPNMux, map[string]string, reloadutil.ReloadFunc, error) {
func NewListener(l *listenerutil.ListenerConfig, ui cli.Ui) (*alpnmux.ALPNMux, map[string]string, reloadutil.ReloadFunc, error) {
f, ok := BuiltinListeners[l.Type]
if !ok {
return nil, nil, nil, fmt.Errorf("unknown listener type: %q", l.Type)
@@ -69,7 +67,7 @@ func NewListener(l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui)
l.TLSDisable = true
}
finalAddr, ln, err := f(purpose, l, logger, ui)
finalAddr, ln, err := f(purpose, l, ui)
if err != nil {
return nil, nil, nil, err
}
@@ -83,10 +81,7 @@ func NewListener(l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui)
"addr": finalAddr,
}
if _, ok := os.LookupEnv("BOUNDARY_LOG_CONNECTION_MUXING"); !ok {
logger = nil
}
alpnMux := alpnmux.New(ln, logger)
alpnMux := alpnmux.New(ln)
if l.TLSDisable {
return alpnMux, props, nil, nil
@@ -115,7 +110,7 @@ func NewListener(l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui)
return alpnMux, props, reloadFunc, nil
}
func tcpListenerFactory(purpose string, l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui) (string, net.Listener, error) {
func tcpListenerFactory(purpose string, l *listenerutil.ListenerConfig, ui cli.Ui) (string, net.Listener, error) {
if l.Address == "" {
switch purpose {
case "cluster":
@@ -180,7 +175,7 @@ func tcpListenerFactory(purpose string, l *listenerutil.ListenerConfig, logger h
return finalListenAddr, ln, nil
}
func unixListenerFactory(purpose string, l *listenerutil.ListenerConfig, logger hclog.Logger, ui cli.Ui) (string, net.Listener, error) {
func unixListenerFactory(purpose string, l *listenerutil.ListenerConfig, ui cli.Ui) (string, net.Listener, error) {
var uConfig *listenerutil.UnixSocketsConfig
if l.SocketMode != "" &&
l.SocketUser != "" &&
+2 -2
View File
@@ -2,7 +2,7 @@
package base
import "github.com/hashicorp/go-hclog"
import "context"
func StartMemProfiler(_ hclog.Logger) {
func StartMemProfiler(_ context.Context) {
}
+6 -7
View File
@@ -8,14 +8,13 @@ import (
"runtime"
"runtime/pprof"
"time"
"github.com/hashicorp/go-hclog"
)
func StartMemProfiler(logger hclog.Logger) {
func StartMemProfiler(ctx context.Context) {
const op = "base.StartMemProfiler"
profileDir := filepath.Join(os.TempDir(), "boundaryprof")
if err := os.MkdirAll(profileDir, 0o700); err != nil {
logger.Debug("could not create profile directory", "error", err)
event.WriteError(ctx, op, err,"could not create profile directory")
return
}
@@ -24,14 +23,14 @@ func StartMemProfiler(logger hclog.Logger) {
filename := filepath.Join(profileDir, time.Now().UTC().Format("20060102_150405")) + ".pprof"
f, err := os.Create(filename)
if err != nil {
logger.Debug("could not create memory profile", "error", err)
event.WriteError(ctx, op, err, event.WithInfo("could not create memory profile"))
}
runtime.GC()
if err := pprof.WriteHeapProfile(f); err != nil {
logger.Debug("could not write memory profile", "error", err)
event.WriteError(ctx, op, err, "could not write memory profile"))
}
f.Close()
logger.Debug("wrote memory profile", "filename", filename)
event.WriteSysEvent(ctx, op, "wrote memory profile", "filename", filename)
time.Sleep(5 * time.Minute)
}
}()
+1 -1
View File
@@ -395,7 +395,7 @@ func (b *Server) SetupListeners(ui cli.Ui, config *configutil.SharedConfig, allo
}
}
lnMux, props, reloadFunc, err := NewListener(lnConfig, b.Logger, ui)
lnMux, props, reloadFunc, err := NewListener(lnConfig, ui)
if err != nil {
return fmt.Errorf("Error initializing listener of type %s: %w", lnConfig.Type, err)
}
+1 -1
View File
@@ -499,7 +499,7 @@ func (c *Command) Run(args []string) int {
// here)
c.SetStatusGracePeriodDuration(0)
base.StartMemProfiler(c.Logger)
base.StartMemProfiler(ctx)
if c.flagRecoveryKey != "" {
c.Config.DevRecoveryKey = c.flagRecoveryKey
+1 -1
View File
@@ -178,7 +178,7 @@ func (c *Command) Run(args []string) int {
// here)
c.SetStatusGracePeriodDuration(0)
base.StartMemProfiler(c.Logger)
base.StartMemProfiler(ctx)
if err := c.SetupKMSes(c.UI, c.Config); err != nil {
c.UI.Error(err.Error())
@@ -16,7 +16,6 @@ import (
"github.com/hashicorp/boundary/internal/cmd/config"
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/boundary/internal/tests/helper"
"github.com/hashicorp/go-hclog"
"github.com/mitchellh/cli"
"github.com/stretchr/testify/require"
"go.uber.org/atomic"
@@ -86,10 +85,6 @@ listener "tcp" {
`
func TestServer_ShutdownWorker(t *testing.T) {
logger := hclog.New(&hclog.LoggerOptions{
Name: t.Name(),
Level: hclog.Trace,
})
require := require.New(t)
controllerKey, workerAuthKey, _ := config.DevKeyGeneration()
@@ -144,7 +139,7 @@ func TestServer_ShutdownWorker(t *testing.T) {
require.NotNil(tgt)
// Create test server, update default port on target
ts := helper.NewTestTcpServer(t, logger)
ts := helper.NewTestTcpServer(t)
require.NotNil(ts)
defer ts.Close()
tgt, err = tcl.Update(ctx, tgt.Item.Id, tgt.Item.Version, targets.WithTcpTargetDefaultPort(ts.Port()))
@@ -152,11 +147,11 @@ func TestServer_ShutdownWorker(t *testing.T) {
require.NotNil(tgt)
// Authorize and connect
sess := helper.NewTestSession(ctx, t, logger, tcl, "ttcp_1234567890")
sess := helper.NewTestSession(ctx, t, tcl, "ttcp_1234567890")
sConn := sess.Connect(ctx, t)
// Run initial send/receive test, make sure things are working
logger.Debug("running initial send/recv test")
t.Log("running initial send/recv test")
sConn.TestSendRecvAll(t)
// Now, shut the worker down.
+11 -32
View File
@@ -11,7 +11,6 @@ import (
"github.com/hashicorp/boundary/internal/observability/event"
"github.com/hashicorp/boundary/internal/oplog"
"github.com/hashicorp/boundary/internal/scheduler"
"github.com/hashicorp/go-hclog"
vault "github.com/hashicorp/vault/api"
ua "go.uber.org/atomic"
)
@@ -28,37 +27,37 @@ const (
renewalWindow = 10 * time.Minute
)
func RegisterJobs(ctx context.Context, scheduler *scheduler.Scheduler, r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger) error {
func RegisterJobs(ctx context.Context, scheduler *scheduler.Scheduler, r db.Reader, w db.Writer, kms *kms.Kms) error {
const op = "vault.RegisterJobs"
tokenRenewal, err := newTokenRenewalJob(r, w, kms, logger)
tokenRenewal, err := newTokenRenewalJob(r, w, kms)
if err != nil {
return errors.Wrap(ctx, err, op)
}
if err = scheduler.RegisterJob(ctx, tokenRenewal); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("token renewal job"))
}
tokenRevoke, err := newTokenRevocationJob(r, w, kms, logger)
tokenRevoke, err := newTokenRevocationJob(r, w, kms)
if err != nil {
return errors.Wrap(ctx, err, op)
}
if err = scheduler.RegisterJob(ctx, tokenRevoke); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("token revocation job"))
}
credRenewal, err := newCredentialRenewalJob(r, w, kms, logger)
credRenewal, err := newCredentialRenewalJob(r, w, kms)
if err != nil {
return errors.Wrap(ctx, err, op)
}
if err = scheduler.RegisterJob(ctx, credRenewal); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("credential renewal job"))
}
credRevoke, err := newCredentialRevocationJob(r, w, kms, logger)
credRevoke, err := newCredentialRevocationJob(r, w, kms)
if err != nil {
return errors.Wrap(ctx, err, op)
}
if err = scheduler.RegisterJob(ctx, credRevoke); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("credential revocation job"))
}
credStoreCleanup, err := newCredentialStoreCleanupJob(r, w, kms, logger)
credStoreCleanup, err := newCredentialStoreCleanupJob(r, w, kms)
if err != nil {
return errors.Wrap(ctx, err, op)
}
@@ -82,7 +81,6 @@ type TokenRenewalJob struct {
reader db.Reader
writer db.Writer
kms *kms.Kms
logger hclog.Logger
limit int
running ua.Bool
@@ -93,7 +91,7 @@ type TokenRenewalJob struct {
// newTokenRenewalJob creates a new in-memory TokenRenewalJob.
//
// WithLimit is the only supported option.
func newTokenRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger, opt ...Option) (*TokenRenewalJob, error) {
func newTokenRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*TokenRenewalJob, error) {
const op = "vault.newTokenRenewalJob"
switch {
case r == nil:
@@ -102,8 +100,6 @@ func newTokenRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Log
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing db.Writer")
case kms == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing kms")
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
@@ -115,7 +111,6 @@ func newTokenRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Log
reader: r,
writer: w,
kms: kms,
logger: logger,
limit: opts.withLimit,
}, nil
}
@@ -308,7 +303,6 @@ type TokenRevocationJob struct {
reader db.Reader
writer db.Writer
kms *kms.Kms
logger hclog.Logger
limit int
running ua.Bool
@@ -319,7 +313,7 @@ type TokenRevocationJob struct {
// newTokenRevocationJob creates a new in-memory TokenRevocationJob.
//
// WithLimit is the only supported option.
func newTokenRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger, opt ...Option) (*TokenRevocationJob, error) {
func newTokenRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*TokenRevocationJob, error) {
const op = "vault.newTokenRevocationJob"
switch {
case r == nil:
@@ -328,8 +322,6 @@ func newTokenRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing db.Writer")
case kms == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing kms")
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
@@ -341,7 +333,6 @@ func newTokenRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.
reader: r,
writer: w,
kms: kms,
logger: logger,
limit: opts.withLimit,
}, nil
}
@@ -476,7 +467,6 @@ type CredentialRenewalJob struct {
reader db.Reader
writer db.Writer
kms *kms.Kms
logger hclog.Logger
limit int
running ua.Bool
@@ -487,7 +477,7 @@ type CredentialRenewalJob struct {
// newCredentialRenewalJob creates a new in-memory CredentialRenewalJob.
//
// WithLimit is the only supported option.
func newCredentialRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger, opt ...Option) (*CredentialRenewalJob, error) {
func newCredentialRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*CredentialRenewalJob, error) {
const op = "vault.newCredentialRenewalJob"
switch {
case r == nil:
@@ -496,8 +486,6 @@ func newCredentialRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclo
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing db.Writer")
case kms == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing kms")
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
@@ -509,7 +497,6 @@ func newCredentialRenewalJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclo
reader: r,
writer: w,
kms: kms,
logger: logger,
limit: opts.withLimit,
}, nil
}
@@ -644,7 +631,6 @@ type CredentialRevocationJob struct {
reader db.Reader
writer db.Writer
kms *kms.Kms
logger hclog.Logger
limit int
running ua.Bool
@@ -655,7 +641,7 @@ type CredentialRevocationJob struct {
// newCredentialRevocationJob creates a new in-memory CredentialRevocationJob.
//
// WithLimit is the only supported option.
func newCredentialRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger, opt ...Option) (*CredentialRevocationJob, error) {
func newCredentialRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*CredentialRevocationJob, error) {
const op = "vault.newCredentialRevocationJob"
switch {
case r == nil:
@@ -664,8 +650,6 @@ func newCredentialRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger h
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing db.Writer")
case kms == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing kms")
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
@@ -677,7 +661,6 @@ func newCredentialRevocationJob(r db.Reader, w db.Writer, kms *kms.Kms, logger h
reader: r,
writer: w,
kms: kms,
logger: logger,
limit: opts.withLimit,
}, nil
}
@@ -790,7 +773,6 @@ type CredentialStoreCleanupJob struct {
reader db.Reader
writer db.Writer
kms *kms.Kms
logger hclog.Logger
limit int
running ua.Bool
@@ -801,7 +783,7 @@ type CredentialStoreCleanupJob struct {
// newCredentialStoreCleanupJob creates a new in-memory CredentialStoreCleanupJob.
//
// No options are supported.
func newCredentialStoreCleanupJob(r db.Reader, w db.Writer, kms *kms.Kms, logger hclog.Logger, opt ...Option) (*CredentialStoreCleanupJob, error) {
func newCredentialStoreCleanupJob(r db.Reader, w db.Writer, kms *kms.Kms, opt ...Option) (*CredentialStoreCleanupJob, error) {
const op = "vault.newCredentialStoreCleanupJob"
switch {
case r == nil:
@@ -810,8 +792,6 @@ func newCredentialStoreCleanupJob(r db.Reader, w db.Writer, kms *kms.Kms, logger
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing db.Writer")
case kms == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing kms")
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
@@ -823,7 +803,6 @@ func newCredentialStoreCleanupJob(r db.Reader, w db.Writer, kms *kms.Kms, logger
reader: r,
writer: w,
kms: kms,
logger: logger,
limit: opts.withLimit,
}, nil
}
+54 -125
View File
@@ -16,7 +16,6 @@ import (
"github.com/hashicorp/boundary/internal/scheduler"
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/boundary/internal/target"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
vault "github.com/hashicorp/vault/api"
"github.com/jinzhu/gorm"
@@ -154,10 +153,9 @@ func TestNewTokenRenewalJob(t *testing.T) {
kmsCache := kms.TestKms(t, conn, wrapper)
type args struct {
r db.Reader
w db.Writer
kms *kms.Kms
logger hclog.Logger
r db.Reader
w db.Writer
kms *kms.Kms
}
tests := []struct {
name string
@@ -190,32 +188,20 @@ func TestNewTokenRenewalJob(t *testing.T) {
wantErrCode: errors.InvalidParameter,
},
{
name: "nil logger",
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
},
{
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
},
wantLimit: db.DefaultLimit,
},
{
name: "valid-with-limit",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
r: rw,
w: rw,
kms: kmsCache,
},
options: []Option{WithLimit(100)},
wantLimit: 100,
@@ -226,7 +212,7 @@ func TestNewTokenRenewalJob(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := newTokenRenewalJob(tt.args.r, tt.args.w, tt.args.kms, tt.args.logger, tt.options...)
got, err := newTokenRenewalJob(tt.args.r, tt.args.w, tt.args.kms, tt.options...)
if tt.wantErr {
require.Error(err)
assert.Nil(got)
@@ -238,7 +224,6 @@ func TestNewTokenRenewalJob(t *testing.T) {
assert.Equal(tt.args.r, got.reader)
assert.Equal(tt.args.w, got.writer)
assert.Equal(tt.args.kms, got.kms)
require.NotNil(got.logger)
assert.Equal(tt.wantLimit, got.limit)
})
}
@@ -313,7 +298,7 @@ func TestTokenRenewalJob_RunLimits(t *testing.T) {
require.NoError(err)
assert.Equal(1, numRows)
r, err := newTokenRenewalJob(rw, rw, kmsCache, hclog.L(), tt.opts...)
r, err := newTokenRenewalJob(rw, rw, kmsCache, tt.opts...)
require.NoError(err)
err = r.Run(context.Background())
@@ -349,7 +334,7 @@ func TestTokenRenewalJob_Run(t *testing.T) {
cs, err := repo.CreateCredentialStore(context.Background(), in)
require.NoError(err)
r, err := newTokenRenewalJob(rw, rw, kmsCache, hclog.L())
r, err := newTokenRenewalJob(rw, rw, kmsCache)
require.NoError(err)
err = sche.RegisterJob(context.Background(), r)
@@ -455,7 +440,7 @@ func TestTokenRenewalJob_RunExpired(t *testing.T) {
assert.NoError(err)
require.NotNil(in)
r, err := newTokenRenewalJob(rw, rw, kmsCache, hclog.L())
r, err := newTokenRenewalJob(rw, rw, kmsCache)
require.NoError(err)
err = sche.RegisterJob(context.Background(), r)
@@ -568,7 +553,7 @@ func TestTokenRenewalJob_NextRunIn(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
r, err := newTokenRenewalJob(rw, rw, kmsCache, hclog.L())
r, err := newTokenRenewalJob(rw, rw, kmsCache)
assert.NoError(err)
require.NotNil(r)
@@ -612,10 +597,9 @@ func TestNewTokenRevocationJob(t *testing.T) {
kmsCache := kms.TestKms(t, conn, wrapper)
type args struct {
r db.Reader
w db.Writer
kms *kms.Kms
logger hclog.Logger
r db.Reader
w db.Writer
kms *kms.Kms
}
tests := []struct {
name string
@@ -648,32 +632,20 @@ func TestNewTokenRevocationJob(t *testing.T) {
wantErrCode: errors.InvalidParameter,
},
{
name: "nil logger",
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
},
{
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
},
wantLimit: db.DefaultLimit,
},
{
name: "valid-with-limit",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
r: rw,
w: rw,
kms: kmsCache,
},
options: []Option{WithLimit(100)},
wantLimit: 100,
@@ -684,7 +656,7 @@ func TestNewTokenRevocationJob(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := newTokenRevocationJob(tt.args.r, tt.args.w, tt.args.kms, tt.args.logger, tt.options...)
got, err := newTokenRevocationJob(tt.args.r, tt.args.w, tt.args.kms, tt.options...)
if tt.wantErr {
require.Error(err)
assert.Nil(got)
@@ -696,7 +668,6 @@ func TestNewTokenRevocationJob(t *testing.T) {
assert.Equal(tt.args.r, got.reader)
assert.Equal(tt.args.w, got.writer)
assert.Equal(tt.args.kms, got.kms)
require.NotNil(got.logger)
assert.Equal(tt.wantLimit, got.limit)
})
}
@@ -773,7 +744,7 @@ func TestTokenRevocationJob_RunLimits(t *testing.T) {
require.NoError(err)
assert.Equal(1, numRows)
r, err := newTokenRevocationJob(rw, rw, kmsCache, hclog.L(), tt.opts...)
r, err := newTokenRevocationJob(rw, rw, kmsCache, tt.opts...)
require.NoError(err)
err = r.Run(context.Background())
@@ -808,7 +779,7 @@ func TestTokenRevocationJob_Run(t *testing.T) {
cs, err := repo.CreateCredentialStore(context.Background(), in)
require.NoError(err)
r, err := newTokenRevocationJob(rw, rw, kmsCache, hclog.L())
r, err := newTokenRevocationJob(rw, rw, kmsCache)
require.NoError(err)
err = sche.RegisterJob(context.Background(), r)
@@ -927,10 +898,9 @@ func TestNewCredentialRenewalJob(t *testing.T) {
kmsCache := kms.TestKms(t, conn, wrapper)
type args struct {
r db.Reader
w db.Writer
kms *kms.Kms
logger hclog.Logger
r db.Reader
w db.Writer
kms *kms.Kms
}
tests := []struct {
name string
@@ -963,32 +933,20 @@ func TestNewCredentialRenewalJob(t *testing.T) {
wantErrCode: errors.InvalidParameter,
},
{
name: "nil logger",
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
},
{
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
},
wantLimit: db.DefaultLimit,
},
{
name: "valid-with-limit",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
r: rw,
w: rw,
kms: kmsCache,
},
options: []Option{WithLimit(100)},
wantLimit: 100,
@@ -999,7 +957,7 @@ func TestNewCredentialRenewalJob(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := newCredentialRenewalJob(tt.args.r, tt.args.w, tt.args.kms, tt.args.logger, tt.options...)
got, err := newCredentialRenewalJob(tt.args.r, tt.args.w, tt.args.kms, tt.options...)
if tt.wantErr {
require.Error(err)
assert.Nil(got)
@@ -1011,7 +969,6 @@ func TestNewCredentialRenewalJob(t *testing.T) {
assert.Equal(tt.args.r, got.reader)
assert.Equal(tt.args.w, got.writer)
assert.Equal(tt.args.kms, got.kms)
require.NotNil(got.logger)
assert.Equal(tt.wantLimit, got.limit)
})
}
@@ -1112,7 +1069,7 @@ func TestCredentialRenewalJob_RunLimits(t *testing.T) {
testVaultCred(t, conn, v, cl, sess, credsToken, status, 5*time.Minute)
}
r, err := newCredentialRenewalJob(rw, rw, kmsCache, hclog.L(), tt.opts...)
r, err := newCredentialRenewalJob(rw, rw, kmsCache, tt.opts...)
require.NoError(err)
err = r.Run(context.Background())
@@ -1174,7 +1131,7 @@ func TestCredentialRenewalJob_Run(t *testing.T) {
csToken := allocToken()
require.NoError(rw.LookupWhere(context.Background(), &csToken, "token_hmac = ?", []interface{}{cs.outputToken.TokenHmac}))
credRenewal, err := newCredentialRenewalJob(rw, rw, kmsCache, hclog.L())
credRenewal, err := newCredentialRenewalJob(rw, rw, kmsCache)
require.NoError(err)
err = credRenewal.Run(context.Background())
@@ -1280,7 +1237,7 @@ func TestCredentialRenewalJob_RunExpired(t *testing.T) {
repoToken := allocToken()
require.NoError(rw.LookupWhere(context.Background(), &repoToken, "token_hmac = ?", []interface{}{cs.outputToken.TokenHmac}))
credRenewal, err := newCredentialRenewalJob(rw, rw, kmsCache, hclog.L())
credRenewal, err := newCredentialRenewalJob(rw, rw, kmsCache)
require.NoError(err)
_, cred := testVaultCred(t, conn, v, cl, sess, repoToken, ActiveCredential, time.Minute)
@@ -1439,7 +1396,7 @@ func TestCredentialRenewalJob_NextRunIn(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
r, err := newCredentialRenewalJob(rw, rw, kmsCache, hclog.L())
r, err := newCredentialRenewalJob(rw, rw, kmsCache)
assert.NoError(err)
require.NotNil(r)
@@ -1468,10 +1425,9 @@ func TestNewCredentialRevocationJob(t *testing.T) {
kmsCache := kms.TestKms(t, conn, wrapper)
type args struct {
r db.Reader
w db.Writer
kms *kms.Kms
logger hclog.Logger
r db.Reader
w db.Writer
kms *kms.Kms
}
tests := []struct {
name string
@@ -1504,32 +1460,20 @@ func TestNewCredentialRevocationJob(t *testing.T) {
wantErrCode: errors.InvalidParameter,
},
{
name: "nil logger",
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
},
{
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
},
wantLimit: db.DefaultLimit,
},
{
name: "valid-with-limit",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
r: rw,
w: rw,
kms: kmsCache,
},
options: []Option{WithLimit(100)},
wantLimit: 100,
@@ -1540,7 +1484,7 @@ func TestNewCredentialRevocationJob(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := newCredentialRevocationJob(tt.args.r, tt.args.w, tt.args.kms, tt.args.logger, tt.options...)
got, err := newCredentialRevocationJob(tt.args.r, tt.args.w, tt.args.kms, tt.options...)
if tt.wantErr {
require.Error(err)
assert.Nil(got)
@@ -1552,7 +1496,6 @@ func TestNewCredentialRevocationJob(t *testing.T) {
assert.Equal(tt.args.r, got.reader)
assert.Equal(tt.args.w, got.writer)
assert.Equal(tt.args.kms, got.kms)
require.NotNil(got.logger)
assert.Equal(tt.wantLimit, got.limit)
})
}
@@ -1655,7 +1598,7 @@ func TestCredentialRevocationJob_RunLimits(t *testing.T) {
testVaultCred(t, conn, v, cl, sess, repoToken, status, 5*time.Minute)
}
r, err := newCredentialRevocationJob(rw, rw, kmsCache, hclog.L(), tt.opts...)
r, err := newCredentialRevocationJob(rw, rw, kmsCache, tt.opts...)
require.NoError(err)
err = r.Run(context.Background())
@@ -1717,7 +1660,7 @@ func TestCredentialRevocationJob_Run(t *testing.T) {
repoToken := allocToken()
require.NoError(rw.LookupWhere(context.Background(), &repoToken, "token_hmac = ?", []interface{}{cs.outputToken.TokenHmac}))
r, err := newCredentialRevocationJob(rw, rw, kmsCache, hclog.L())
r, err := newCredentialRevocationJob(rw, rw, kmsCache)
require.NoError(err)
err = r.Run(context.Background())
@@ -1807,7 +1750,7 @@ func TestCredentialRevocationJob_RunDeleted(t *testing.T) {
repoToken := allocToken()
require.NoError(rw.LookupWhere(context.Background(), &repoToken, "token_hmac = ?", []interface{}{cs.outputToken.TokenHmac}))
r, err := newCredentialRevocationJob(rw, rw, kmsCache, hclog.L())
r, err := newCredentialRevocationJob(rw, rw, kmsCache)
require.NoError(err)
secret, cred := testVaultCred(t, conn, v, cl, sess, repoToken, ActiveCredential, 5*time.Hour)
@@ -1872,10 +1815,9 @@ func TestNewCredentialStoreCleanupJob(t *testing.T) {
kmsCache := kms.TestKms(t, conn, wrapper)
type args struct {
r db.Reader
w db.Writer
kms *kms.Kms
logger hclog.Logger
r db.Reader
w db.Writer
kms *kms.Kms
}
tests := []struct {
name string
@@ -1908,32 +1850,20 @@ func TestNewCredentialStoreCleanupJob(t *testing.T) {
wantErrCode: errors.InvalidParameter,
},
{
name: "nil logger",
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
},
{
name: "valid-no-options",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
},
wantLimit: db.DefaultLimit,
},
{
name: "valid-with-limit",
args: args{
r: rw,
w: rw,
kms: kmsCache,
logger: hclog.L(),
r: rw,
w: rw,
kms: kmsCache,
},
options: []Option{WithLimit(100)},
wantLimit: 100,
@@ -1944,7 +1874,7 @@ func TestNewCredentialStoreCleanupJob(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := newCredentialStoreCleanupJob(tt.args.r, tt.args.w, tt.args.kms, tt.args.logger, tt.options...)
got, err := newCredentialStoreCleanupJob(tt.args.r, tt.args.w, tt.args.kms, tt.options...)
if tt.wantErr {
require.Error(err)
assert.Nil(got)
@@ -1956,7 +1886,6 @@ func TestNewCredentialStoreCleanupJob(t *testing.T) {
assert.Equal(tt.args.r, got.reader)
assert.Equal(tt.args.w, got.writer)
assert.Equal(tt.args.kms, got.kms)
require.NotNil(got.logger)
assert.Equal(tt.wantLimit, got.limit)
})
}
@@ -2000,7 +1929,7 @@ func TestCredentialStoreCleanupJob_Run(t *testing.T) {
// create second token on cs2
secondToken := testVaultToken(t, conn, wrapper, v, cs2, MaintainingToken, time.Hour)
r, err := newCredentialStoreCleanupJob(rw, rw, kmsCache, hclog.L())
r, err := newCredentialStoreCleanupJob(rw, rw, kmsCache)
require.NoError(err)
err = sche.RegisterJob(context.Background(), r)
+1 -6
View File
@@ -10,7 +10,6 @@ import (
"github.com/hashicorp/boundary/internal/db"
"github.com/hashicorp/boundary/internal/errors"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
"github.com/hashicorp/go-kms-wrapping/wrappers/aead"
"github.com/hashicorp/go-kms-wrapping/wrappers/multiwrapper"
@@ -51,7 +50,6 @@ func (e *ExternalWrappers) Recovery() wrapping.Wrapper {
// never change, only be added or (eventually) removed, it opportunistically
// caches, going to the database as needed.
type Kms struct {
logger hclog.Logger
// scopePurposeCache holds a per-scope-purpose multiwrapper containing the
// current encrypting key and all previous key versions, for decryption
@@ -65,17 +63,14 @@ type Kms struct {
repo *Repository
}
// NewKms takes in a repo and returns a Kms. Supported options: WithLogger.
// NewKms takes in a repo and returns a Kms.
func NewKms(repo *Repository, opt ...Option) (*Kms, error) {
const op = "kms.NewKms"
if repo == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing underlying repo")
}
opts := getOpts(opt...)
return &Kms{
logger: opts.withLogger,
externalScopeCache: make(map[string]*ExternalWrappers),
repo: repo,
}, nil
-9
View File
@@ -2,7 +2,6 @@ package kms
import (
"github.com/hashicorp/boundary/internal/db"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
)
@@ -21,7 +20,6 @@ type Option func(*options)
// options = how options are represented
type options struct {
withLimit int
withLogger hclog.Logger
withRootWrapper wrapping.Wrapper
withWorkerAuthWrapper wrapping.Wrapper
withRecoveryWrapper wrapping.Wrapper
@@ -43,13 +41,6 @@ func WithLimit(limit int) Option {
}
}
// WithLogger provides a logger to be used when needed
func WithLogger(l hclog.Logger) Option {
return func(o *options) {
o.withLogger = l
}
}
// WithRootWrapper sets the external root wrapper for a given scope
func WithRootWrapper(w wrapping.Wrapper) Option {
return func(o *options) {
+2 -53
View File
@@ -11,7 +11,6 @@ import (
"sync"
"github.com/hashicorp/boundary/internal/observability/event"
"github.com/hashicorp/go-hclog"
)
const (
@@ -50,16 +49,14 @@ type muxedListener struct {
type ALPNMux struct {
ctx context.Context
baseLn net.Listener
log hclog.Logger
cancel context.CancelFunc
muxMap *sync.Map
}
func New(baseLn net.Listener, log hclog.Logger) *ALPNMux {
func New(baseLn net.Listener) *ALPNMux {
ctx, cancel := context.WithCancel(context.Background())
ret := &ALPNMux{
ctx: ctx,
log: log,
cancel: cancel,
muxMap: new(sync.Map),
baseLn: baseLn,
@@ -76,13 +73,8 @@ func (l *ALPNMux) Close() error {
return l.baseLn.Close()
}
func (l *ALPNMux) SetLogger(log hclog.Logger) {
l.log = log
}
func (l *ALPNMux) RegisterProto(proto string, tlsConf *tls.Config) (net.Listener, error) {
const op = "alpnmux.(ALPNMux).RegisterProto"
ctx := context.TODO()
switch proto {
case NoProto:
if tlsConf != nil {
@@ -112,16 +104,11 @@ func (l *ALPNMux) RegisterProto(proto string, tlsConf *tls.Config) (net.Listener
go l.UnregisterProto(proto)
}
if l.log != nil && l.log.IsDebug() {
event.WriteSysEvent(ctx, op, "registered", "proto", proto)
}
return sub, nil
}
func (l *ALPNMux) UnregisterProto(proto string) {
const op = "alpnmux.(ALPNMux).UnregisterProto"
ctx := context.TODO()
val, ok := l.muxMap.Load(proto)
if !ok {
return
@@ -134,9 +121,6 @@ func (l *ALPNMux) UnregisterProto(proto string) {
close(ml.connCh)
})
l.muxMap.Delete(proto)
if l.log != nil && l.log.IsDebug() {
event.WriteSysEvent(ctx, op, "unregistered", "proto", proto)
}
}
func (l *ALPNMux) GetListener(proto string) net.Listener {
@@ -152,13 +136,8 @@ func (l *ALPNMux) GetListener(proto string) net.Listener {
func (l *ALPNMux) getConfigForClient(hello *tls.ClientHelloInfo) (*tls.Config, error) {
const op = "alpnmux.(ALPNMux).getConfigForClient"
ctx := context.TODO()
var ret *tls.Config
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "getting config for client", "supported_protos", hello.SupportedProtos, "server_name", hello.ServerName)
}
supportedProtos := hello.SupportedProtos
if len(hello.SupportedProtos) == 0 {
supportedProtos = append(supportedProtos, "")
@@ -205,9 +184,6 @@ func (l *ALPNMux) accept() {
if conn == nil {
continue
}
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "got connection", "addr", conn.RemoteAddr())
}
// Do the rest in a goroutine so that a timeout in e.g. handshaking
// doesn't block acceptance of the next connection
@@ -218,9 +194,6 @@ func (l *ALPNMux) accept() {
}
peeked, err := bufConn.buffer.Peek(3)
if err != nil {
if l.log != nil && l.log.IsDebug() {
event.WriteError(ctx, op, err, event.WithInfoMsg("error peeking connection", "addr", conn.RemoteAddr()))
}
bufConn.Close()
return
}
@@ -228,20 +201,11 @@ func (l *ALPNMux) accept() {
// First byte should always be a handshake, second byte a 3, and
// third can be 3 or 1 depending on the implementation
case peeked[0] != 0x16 || peeked[1] != 0x03 || (peeked[2] != 0x03 && peeked[2] != 0x01):
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "connection is not tls", "addr", conn.RemoteAddr())
}
val, ok := l.muxMap.Load(NoProto)
if !ok {
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "no non-tls registration found", "addr", conn.RemoteAddr())
}
bufConn.Close()
return
}
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "found noproto handler", "addr", conn.RemoteAddr())
}
ml := val.(*muxedListener)
ml.connMutex.RLock()
if !ml.closed {
@@ -250,38 +214,23 @@ func (l *ALPNMux) accept() {
ml.connMutex.RUnlock()
default:
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "connection is tls", "addr", conn.RemoteAddr())
}
tlsConn := tls.Server(bufConn, baseTLSConf)
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "handshaking", "addr", conn.RemoteAddr())
}
if err := tlsConn.Handshake(); err != nil {
closeErr := tlsConn.Close()
if l.log != nil && l.log.IsDebug() {
if closeErr != nil {
event.WriteError(ctx, op, err, event.WithInfoMsg("error handshaking connection", "addr", conn.RemoteAddr(), "close_error", closeErr))
}
return
}
negProto := tlsConn.ConnectionState().NegotiatedProtocol
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "tls negotiated", "addr", conn.RemoteAddr(), "proto", negProto)
}
val, ok := l.muxMap.Load(negProto)
if !ok {
val, ok = l.muxMap.Load(DefaultProto)
if !ok {
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "no handler found", "addr", conn.RemoteAddr(), "proto", negProto)
}
tlsConn.Close()
return
}
}
if l.log != nil && l.log.IsTrace() {
event.WriteSysEvent(ctx, op, "found tls handler", "addr", conn.RemoteAddr(), "proto", negProto)
}
ml := val.(*muxedListener)
ml.connMutex.RLock()
if !ml.closed {
+2 -5
View File
@@ -27,7 +27,7 @@ func TestListenCloseErrMsg(t *testing.T) {
func TestRegistrationErrors(t *testing.T) {
listener := getListener(t)
defer listener.Close()
mux := New(listener, nil)
mux := New(listener)
p1config := getTestTLS(t, []string{"p1"})
if _, err := mux.RegisterProto("p1", nil); err.Error() != "nil tls config given" {
t.Fatal(err)
@@ -78,10 +78,7 @@ func TestListening(t *testing.T) {
}
listener := getListener(t)
logger := hclog.Default()
logger.SetLevel(hclog.Trace)
// log.SetOutput(logger.StandardWriter(new(hclog.StandardLoggerOptions)))
mux := New(listener, logger)
mux := New(listener)
defer mux.Close()
emptyconns := atomic.NewUint32(0)
+1 -9
View File
@@ -9,7 +9,6 @@ import (
"github.com/hashicorp/boundary/internal/errors"
"github.com/hashicorp/boundary/internal/observability/event"
"github.com/hashicorp/boundary/internal/scheduler/job"
"github.com/hashicorp/go-hclog"
ua "go.uber.org/atomic"
)
@@ -25,7 +24,6 @@ type runningJob struct {
type Scheduler struct {
serverId string
jobRepoFn jobRepoFactory
logger hclog.Logger
registeredJobs *sync.Map
runningJobs *sync.Map
@@ -43,11 +41,9 @@ type Scheduler struct {
//
// • jobRepoFn must be provided and is a function that returns the job repository
//
// • logger must be provided and is used to log errors that occur during scheduling and running of jobs
//
// WithRunJobsLimit, WithRunJobsInterval, WithMonitorInterval and WithInterruptThreshold are
// the only valid options.
func New(serverId string, jobRepoFn jobRepoFactory, logger hclog.Logger, opt ...Option) (*Scheduler, error) {
func New(serverId string, jobRepoFn jobRepoFactory, opt ...Option) (*Scheduler, error) {
const op = "scheduler.New"
if serverId == "" {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing server id")
@@ -55,15 +51,11 @@ func New(serverId string, jobRepoFn jobRepoFactory, logger hclog.Logger, opt ...
if jobRepoFn == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing job repo function")
}
if logger == nil {
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
}
opts := getOpts(opt...)
return &Scheduler{
serverId: serverId,
jobRepoFn: jobRepoFn,
logger: logger,
registeredJobs: new(sync.Map),
runningJobs: new(sync.Map),
runJobsLimit: opts.withRunJobsLimit,
+1 -17
View File
@@ -11,7 +11,6 @@ import (
"github.com/hashicorp/boundary/internal/iam"
"github.com/hashicorp/boundary/internal/kms"
"github.com/hashicorp/boundary/internal/scheduler/job"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -31,7 +30,6 @@ func TestScheduler_New(t *testing.T) {
type args struct {
serverId string
jobRepo jobRepoFactory
logger hclog.Logger
runLimit uint
runInterval time.Duration
}
@@ -59,22 +57,11 @@ func TestScheduler_New(t *testing.T) {
wantErrCode: errors.InvalidParameter,
wantErrMsg: "scheduler.New: missing job repo function: parameter violation: error #100",
},
{
name: "with-no-logger",
args: args{
serverId: "test-server",
jobRepo: jobRepoFn,
},
wantErr: true,
wantErrCode: errors.InvalidParameter,
wantErrMsg: "scheduler.New: missing logger: parameter violation: error #100",
},
{
name: "valid",
args: args{
serverId: "test-server",
jobRepo: jobRepoFn,
logger: hclog.L(),
},
want: args{
serverId: "test-server",
@@ -87,7 +74,6 @@ func TestScheduler_New(t *testing.T) {
args: args{
serverId: "test-server",
jobRepo: jobRepoFn,
logger: hclog.L(),
},
opts: []Option{
WithRunJobsInterval(time.Hour),
@@ -103,7 +89,6 @@ func TestScheduler_New(t *testing.T) {
args: args{
serverId: "test-server",
jobRepo: jobRepoFn,
logger: hclog.L(),
},
opts: []Option{
WithRunJobsLimit(20),
@@ -119,7 +104,6 @@ func TestScheduler_New(t *testing.T) {
args: args{
serverId: "test-server",
jobRepo: jobRepoFn,
logger: hclog.L(),
},
opts: []Option{
WithRunJobsInterval(time.Hour),
@@ -137,7 +121,7 @@ func TestScheduler_New(t *testing.T) {
tt := tt
t.Run(tt.name, func(t *testing.T) {
assert, require := assert.New(t), require.New(t)
got, err := New(tt.args.serverId, tt.args.jobRepo, tt.args.logger, tt.opts...)
got, err := New(tt.args.serverId, tt.args.jobRepo, tt.opts...)
if tt.wantErr {
require.Error(err)
assert.Truef(errors.Match(errors.T(tt.wantErrCode), err), "Unexpected error %s", err)
+1 -2
View File
@@ -11,7 +11,6 @@ import (
"github.com/hashicorp/boundary/internal/kms"
"github.com/hashicorp/boundary/internal/scheduler/job"
"github.com/hashicorp/boundary/internal/servers"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
"github.com/hashicorp/go-uuid"
"github.com/jinzhu/gorm"
@@ -47,7 +46,7 @@ func TestScheduler(t *testing.T, conn *gorm.DB, wrapper wrapping.Wrapper, opt ..
return job.NewRepository(rw, rw, kmsCache)
}
s, err := New(controller.PrivateId, jobRepoFn, hclog.L(), opt...)
s, err := New(controller.PrivateId, jobRepoFn, opt...)
require.NoError(t, err)
return s
-4
View File
@@ -22,7 +22,6 @@ import (
"github.com/hashicorp/boundary/internal/types/resource"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/boundary/sdk/recovery"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
"github.com/mr-tron/base58"
"google.golang.org/protobuf/proto"
@@ -105,7 +104,6 @@ type VerifyResults struct {
}
type verifier struct {
logger hclog.Logger
iamRepoFn common.IamRepoFactory
authTokenRepoFn common.AuthTokenRepoFactory
serversRepoFn common.ServersRepoFactory
@@ -122,14 +120,12 @@ type verifier struct {
// HTTP handler and should exist for every request that reaches the service
// handlers.
func NewVerifierContext(ctx context.Context,
logger hclog.Logger,
iamRepoFn common.IamRepoFactory,
authTokenRepoFn common.AuthTokenRepoFactory,
serversRepoFn common.ServersRepoFactory,
kms *kms.Kms,
requestInfo RequestInfo) context.Context {
return context.WithValue(ctx, verifierKey, &verifier{
logger: logger,
iamRepoFn: iamRepoFn,
authTokenRepoFn: authTokenRepoFn,
serversRepoFn: serversRepoFn,
@@ -13,7 +13,6 @@ import (
"github.com/hashicorp/boundary/internal/kms"
"github.com/hashicorp/boundary/internal/servers"
"github.com/hashicorp/boundary/internal/servers/controller/handlers"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -21,7 +20,6 @@ import (
func TestAuthTokenAuthenticator(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
rw := db.New(conn)
logger := hclog.New(nil)
wrapper := db.TestWrapper(t)
kms := kms.TestKms(t, conn, wrapper)
tokenRepo, err := authtoken.NewRepository(rw, rw, kms)
@@ -119,7 +117,7 @@ func TestAuthTokenAuthenticator(t *testing.T) {
if tc.userId == "" {
return
}
ctx := NewVerifierContext(context.Background(), logger, iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx := NewVerifierContext(context.Background(), iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
v, ok := ctx.Value(verifierKey).(*verifier)
require.True(t, ok)
+1 -1
View File
@@ -22,5 +22,5 @@ func DisabledAuthTestContext(iamRepoFn common.IamRepoFactory, scopeId string, op
reqInfo.userIdOverride = "u_auth"
}
requestContext := context.WithValue(context.Background(), requests.ContextRequestInformationKey, &requests.RequestContext{})
return NewVerifierContext(requestContext, nil, iamRepoFn, nil, nil, opts.withKms, reqInfo)
return NewVerifierContext(requestContext, iamRepoFn, nil, nil, opts.withKms, reqInfo)
}
@@ -225,7 +225,6 @@ func TestListingScopeIds(t *testing.T) {
o, p := iam.TestScopes(t, iamRepo)
at := authtoken.TestAuthToken(t, conn, kms, o.GetPublicId())
ctx := auth.NewVerifierContext(context.Background(),
nil,
iamRepoFn,
authTokenRepoFn,
serversRepoFn,
+4 -4
View File
@@ -105,7 +105,7 @@ func New(ctx context.Context, conf *Config) (*Controller, error) {
if err != nil {
return nil, fmt.Errorf("error creating kms repository: %w", err)
}
c.kms, err = kms.NewKms(kmsRepo, kms.WithLogger(c.logger.Named("kms")))
c.kms, err = kms.NewKms(kmsRepo)
if err != nil {
return nil, fmt.Errorf("error creating kms cache: %w", err)
}
@@ -121,7 +121,7 @@ func New(ctx context.Context, conf *Config) (*Controller, error) {
}
// TODO: the RunJobsLimit is temporary until a better fix gets in. This
// currently caps the scheduler at running 10 jobs per interval.
c.scheduler, err = scheduler.New(c.conf.RawConfig.Controller.Name, jobRepoFn, c.logger, scheduler.WithRunJobsLimit(10))
c.scheduler, err = scheduler.New(c.conf.RawConfig.Controller.Name, jobRepoFn, scheduler.WithRunJobsLimit(10))
if err != nil {
return nil, fmt.Errorf("error creating new scheduler: %w", err)
}
@@ -203,7 +203,7 @@ func (c *Controller) Start() error {
func (c *Controller) registerJobs() error {
rw := db.New(c.conf.Database)
if err := vault.RegisterJobs(c.baseContext, c.scheduler, rw, rw, c.kms, c.logger); err != nil {
if err := vault.RegisterJobs(c.baseContext, c.scheduler, rw, rw, c.kms); err != nil {
return err
}
@@ -217,7 +217,7 @@ func (c *Controller) registerJobs() error {
// registerSessionCleanupJob is a helper method to abstract
// registering the session cleanup job specifically.
func (c *Controller) registerSessionCleanupJob() error {
sessionCleanupJob, err := newSessionCleanupJob(c.logger, c.SessionRepoFn, int(c.conf.StatusGracePeriodDuration.Seconds()))
sessionCleanupJob, err := newSessionCleanupJob(c.SessionRepoFn, int(c.conf.StatusGracePeriodDuration.Seconds()))
if err != nil {
return fmt.Errorf("error creating session cleanup job: %w", err)
}
+3 -3
View File
@@ -82,7 +82,7 @@ func handleGrpcGateway(c *Controller, props HandlerProperties) (http.Handler, er
runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.HTTPBodyMarshaler{
Marshaler: handlers.JSONMarshaler(),
}),
runtime.WithErrorHandler(handlers.ErrorHandler(c.logger)),
runtime.WithErrorHandler(handlers.ErrorHandler()),
runtime.WithForwardResponseOption(handlers.OutgoingInterceptor),
)
hcs, err := host_catalogs.NewService(c.StaticHostRepoFn, c.IamRepoFn)
@@ -113,7 +113,7 @@ func handleGrpcGateway(c *Controller, props HandlerProperties) (http.Handler, er
if err := services.RegisterAccountServiceHandlerServer(ctx, mux, accts); err != nil {
return nil, fmt.Errorf("failed to register account service handler: %w", err)
}
authMethods, err := authmethods.NewService(c.kms, c.PasswordAuthRepoFn, c.OidcRepoFn, c.IamRepoFn, c.AuthTokenRepoFn, handlers.WithLogger(c.logger.Named("authmethod_service")))
authMethods, err := authmethods.NewService(c.kms, c.PasswordAuthRepoFn, c.OidcRepoFn, c.IamRepoFn, c.AuthTokenRepoFn)
if err != nil {
return nil, fmt.Errorf("failed to create auth method handler service: %w", err)
}
@@ -243,7 +243,7 @@ func wrapHandlerWithCommonFuncs(h http.Handler, c *Controller, props HandlerProp
}
requestInfo.PublicId, requestInfo.EncryptedToken, requestInfo.TokenFormat = auth.GetTokenFromRequest(ctx, c.kms, r)
ctx = auth.NewVerifierContext(ctx, c.logger, c.IamRepoFn, c.AuthTokenRepoFn, c.ServersRepoFn, c.kms, requestInfo)
ctx = auth.NewVerifierContext(ctx, c.IamRepoFn, c.AuthTokenRepoFn, c.ServersRepoFn, c.kms, requestInfo)
// Add general request information to the context. The information from
// the auth verifier context is pretty specifically curated to
+2 -3
View File
@@ -6,10 +6,9 @@ import (
"path/filepath"
"github.com/hashicorp/boundary/internal/observability/event"
"github.com/hashicorp/go-hclog"
)
func devPassthroughHandler(logger hclog.Logger, passthroughDir string) http.Handler {
func devPassthroughHandler(passthroughDir string) http.Handler {
const op = "controller.devPassthroughHandler"
ctx := context.TODO()
// Panic may not be ideal but this is never a production call and it'll
@@ -28,7 +27,7 @@ func devPassthroughHandler(logger hclog.Logger, passthroughDir string) http.Hand
var handleUi = func(c *Controller) http.Handler {
if c.conf.RawConfig.PassthroughDirectory != "" {
return devPassthroughHandler(c.logger, c.conf.RawConfig.PassthroughDirectory)
return devPassthroughHandler(c.conf.RawConfig.PassthroughDirectory)
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNotFound)
+1 -1
View File
@@ -16,7 +16,7 @@ func init() {
func handleUiWithAssets(c *Controller) http.Handler {
var nextHandler http.Handler
if c.conf.RawConfig.PassthroughDirectory != "" {
nextHandler = devPassthroughHandler(c.logger, c.conf.RawConfig.PassthroughDirectory)
nextHandler = devPassthroughHandler(c.conf.RawConfig.PassthroughDirectory)
} else {
nextHandler = ui.Handler()
}
@@ -29,7 +29,6 @@ import (
"github.com/hashicorp/boundary/internal/types/resource"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/boundary/internal/types/subtypes"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-secure-stdlib/strutil"
"google.golang.org/grpc/codes"
"google.golang.org/protobuf/types/known/structpb"
@@ -74,8 +73,6 @@ type Service struct {
oidcRepoFn common.OidcAuthRepoFactory
iamRepoFn common.IamRepoFactory
atRepoFn common.AuthTokenRepoFactory
oidcLogger hclog.Logger
}
// NewService returns a auth method service which handles auth method related requests to boundary.
@@ -97,10 +94,7 @@ func NewService(kms *kms.Kms, pwRepoFn common.PasswordAuthRepoFactory, oidcRepoF
return Service{}, fmt.Errorf("nil auth token repository provided")
}
s := Service{kms: kms, pwRepoFn: pwRepoFn, oidcRepoFn: oidcRepoFn, iamRepoFn: iamRepoFn, atRepoFn: atRepoFn}
opts := handlers.GetOpts(opt...)
if opts.WithLogger != nil {
s.oidcLogger = opts.WithLogger.Named("oidc")
}
return s, nil
}
@@ -203,7 +203,6 @@ func TestList_FilterNonPublic(t *testing.T) {
reqCtx: func() context.Context {
at := authtoken.TestAuthToken(t, conn, kmsCache, o.GetPublicId())
return auth.NewVerifierContext(requests.NewRequestContext(context.Background()),
nil,
iamRepoFn,
atRepoFn,
serversRepoFn,
@@ -21,7 +21,6 @@ import (
"github.com/hashicorp/boundary/internal/servers/controller/handlers"
"github.com/hashicorp/boundary/internal/servers/controller/handlers/authtokens"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/go-hclog"
"google.golang.org/grpc/codes"
"google.golang.org/protobuf/testing/protocmp"
@@ -35,7 +34,6 @@ func TestGetSelf(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
rw := db.New(conn)
wrap := db.TestWrapper(t)
logger := hclog.New(nil)
kms := kms.TestKms(t, conn, wrap)
iamRepoFn := func() (*iam.Repository, error) {
@@ -97,7 +95,7 @@ func TestGetSelf(t *testing.T) {
Token: tc.token.GetToken(),
}
ctx := auth.NewVerifierContext(context.Background(), logger, iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx := auth.NewVerifierContext(context.Background(), iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx = context.WithValue(ctx, requests.ContextRequestInformationKey, &requests.RequestContext{})
got, err := a.GetAuthToken(ctx, &pbs.GetAuthTokenRequest{Id: tc.readId})
if tc.err != nil {
@@ -193,7 +191,6 @@ func TestList_Self(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
rw := db.New(conn)
wrap := db.TestWrapper(t)
logger := hclog.New(nil)
kms := kms.TestKms(t, conn, wrap)
iamRepo := iam.TestRepo(t, conn, wrap)
@@ -247,7 +244,7 @@ func TestList_Self(t *testing.T) {
Token: tc.requester.GetToken(),
}
ctx := auth.NewVerifierContext(context.Background(), logger, iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx := auth.NewVerifierContext(context.Background(), iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
got, err := a.ListAuthTokens(ctx, &pbs.ListAuthTokensRequest{ScopeId: o.GetPublicId()})
require.NoError(err)
require.Len(got.Items, 1)
@@ -418,7 +415,6 @@ func TestDeleteSelf(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
rw := db.New(conn)
wrap := db.TestWrapper(t)
logger := hclog.New(nil)
kms := kms.TestKms(t, conn, wrap)
iamRepo := iam.TestRepo(t, conn, wrap)
@@ -494,7 +490,7 @@ func TestDeleteSelf(t *testing.T) {
Token: tc.token.GetToken(),
}
ctx := auth.NewVerifierContext(context.Background(), logger, iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx := auth.NewVerifierContext(context.Background(), iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
got, err := a.DeleteAuthToken(ctx, &pbs.DeleteAuthTokenRequest{Id: tc.deleteId})
if tc.err != nil {
require.EqualError(err, tc.err.Error())
@@ -12,7 +12,6 @@ import (
"github.com/hashicorp/boundary/internal/errors"
pb "github.com/hashicorp/boundary/internal/gen/controller/api"
"github.com/hashicorp/boundary/internal/observability/event"
"github.com/hashicorp/go-hclog"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -185,7 +184,7 @@ func backendErrorToApiError(inErr error) *apiError {
}
}
func ErrorHandler(logger hclog.Logger) runtime.ErrorHandlerFunc {
func ErrorHandler() runtime.ErrorHandlerFunc {
const op = "handlers.ErrorHandler"
const errorFallback = `{"error": "failed to marshal error message"}`
return func(ctx context.Context, _ *runtime.ServeMux, mar runtime.Marshaler, w http.ResponseWriter, r *http.Request, inErr error) {
@@ -13,7 +13,6 @@ import (
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"github.com/hashicorp/boundary/internal/errors"
pb "github.com/hashicorp/boundary/internal/gen/controller/api"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
@@ -28,7 +27,7 @@ func TestApiErrorHandler(t *testing.T) {
mux := runtime.NewServeMux()
inMarsh, outMarsh := runtime.MarshalerForRequest(mux, req)
tested := ErrorHandler(hclog.L())
tested := ErrorHandler()
testCases := []struct {
name string
@@ -4,7 +4,6 @@ import (
"testing"
"github.com/hashicorp/boundary/internal/perms"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -29,15 +28,6 @@ func Test_GetOpts(t *testing.T) {
testOpts.withDiscardUnknownFields = false
assert.Equal(opts, testOpts)
})
t.Run("WithLogger", func(t *testing.T) {
assert := assert.New(t)
opts := GetOpts()
assert.Nil(opts.WithLogger)
opts = GetOpts(WithLogger(hclog.New(nil)))
assert.NotNil(opts.WithLogger)
})
t.Run("WithUserIsAnonymous", func(t *testing.T) {
assert := assert.New(t)
@@ -3,7 +3,6 @@ package handlers
import (
"github.com/hashicorp/boundary/internal/gen/controller/api/resources/scopes"
"github.com/hashicorp/boundary/internal/perms"
"github.com/hashicorp/go-hclog"
"google.golang.org/protobuf/types/known/structpb"
)
@@ -24,7 +23,6 @@ type Option func(*options)
// options = how options are represented
type options struct {
withDiscardUnknownFields bool
WithLogger hclog.Logger
WithUserIsAnonymous bool
WithOutputFields *perms.OutputFieldsMap
WithScope *scopes.ScopeInfo
@@ -47,13 +45,6 @@ func WithDiscardUnknownFields(discard bool) Option {
}
}
// WithLogger provides an option include a logger
func WithLogger(logger hclog.Logger) Option {
return func(o *options) {
o.WithLogger = logger
}
}
// DEPRECATED: Superceded by WithOutputFields. Will be removed once all handlers
// have been migrated to that.
func WithUserIsAnonymous(anonListing bool) Option {
@@ -24,7 +24,6 @@ import (
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/boundary/internal/target"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
@@ -148,7 +147,6 @@ func TestList_Self(t *testing.T) {
conn, _ := db.TestSetup(t, "postgres")
wrap := db.TestWrapper(t)
kms := kms.TestKms(t, conn, wrap)
logger := hclog.New(nil)
iamRepo := iam.TestRepo(t, conn, wrap)
rw := db.New(conn)
@@ -220,7 +218,7 @@ func TestList_Self(t *testing.T) {
Token: tc.requester.GetToken(),
}
ctx := auth.NewVerifierContext(context.Background(), logger, iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
ctx := auth.NewVerifierContext(context.Background(), iamRepoFn, tokenRepoFn, serversRepoFn, kms, requestInfo)
got, err := s.ListSessions(ctx, &pbs.ListSessionsRequest{ScopeId: pWithSessions.GetPublicId()})
require.NoError(t, err)
assert.Equal(t, tc.count, len(got.GetItems()), got.GetItems())
@@ -36,7 +36,6 @@ import (
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/boundary/internal/target"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/go-hclog"
wrapping "github.com/hashicorp/go-kms-wrapping"
"github.com/jinzhu/gorm"
"github.com/stretchr/testify/assert"
@@ -2497,7 +2496,6 @@ func TestAuthorizeSession(t *testing.T) {
org, proj := iam.TestScopes(t, iamRepo)
at := authtoken.TestAuthToken(t, conn, kms, org.GetPublicId())
ctx := auth.NewVerifierContext(requests.NewRequestContext(context.Background()),
nil,
iamRepoFn,
atRepoFn,
serversRepoFn,
@@ -2556,7 +2554,7 @@ func TestAuthorizeSession(t *testing.T) {
require.NoError(t, err)
// Tell our DB that there is a worker ready to serve the data
workerService := workers.NewWorkerServiceServer(hclog.Default(), serversRepoFn, sessionRepoFn, &sync.Map{}, kms)
workerService := workers.NewWorkerServiceServer(serversRepoFn, sessionRepoFn, &sync.Map{}, kms)
_, err = workerService.Status(ctx, &spbs.StatusRequest{
Worker: &spb.Server{
PrivateId: "testworker",
@@ -2665,7 +2663,6 @@ func TestAuthorizeSession_Errors(t *testing.T) {
// Authorized user gets full permissions
at := authtoken.TestAuthToken(t, conn, kms, org.GetPublicId())
ctx := auth.NewVerifierContext(requests.NewRequestContext(context.Background()),
nil,
iamRepoFn,
atRepoFn,
serversRepoFn,
@@ -2685,7 +2682,7 @@ func TestAuthorizeSession_Errors(t *testing.T) {
store := vault.TestCredentialStore(t, conn, wrapper, proj.GetPublicId(), v.Addr, tok, sec.Auth.Accessor)
workerExists := func(tar *target.TcpTarget) (version uint32) {
workerService := workers.NewWorkerServiceServer(hclog.Default(), serversRepoFn, sessionRepoFn, &sync.Map{}, kms)
workerService := workers.NewWorkerServiceServer(serversRepoFn, sessionRepoFn, &sync.Map{}, kms)
_, err := workerService.Status(context.Background(), &spbs.StatusRequest{
Worker: &spb.Server{
PrivateId: "testworker",
@@ -17,7 +17,6 @@ import (
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/boundary/internal/types/resource"
"github.com/hashicorp/go-bexpr"
"github.com/hashicorp/go-hclog"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -26,7 +25,6 @@ type workerServiceServer struct {
pbs.UnimplementedServerCoordinationServiceServer
pbs.UnimplementedSessionServiceServer
logger hclog.Logger
serversRepoFn common.ServersRepoFactory
sessionRepoFn common.SessionRepoFactory
updateTimes *sync.Map
@@ -34,13 +32,11 @@ type workerServiceServer struct {
}
func NewWorkerServiceServer(
logger hclog.Logger,
serversRepoFn common.ServersRepoFactory,
sessionRepoFn common.SessionRepoFactory,
updateTimes *sync.Map,
kms *kms.Kms) *workerServiceServer {
return &workerServiceServer{
logger: logger,
serversRepoFn: serversRepoFn,
sessionRepoFn: sessionRepoFn,
updateTimes: updateTimes,
+1 -1
View File
@@ -119,7 +119,7 @@ func (c *Controller) startListeners() error {
grpc.MaxRecvMsgSize(math.MaxInt32),
grpc.MaxSendMsgSize(math.MaxInt32),
)
workerService := workers.NewWorkerServiceServer(c.logger.Named("worker-handler"), c.ServersRepoFn, c.SessionRepoFn, c.workerStatusUpdateTimes, c.kms)
workerService := workers.NewWorkerServiceServer(c.ServersRepoFn, c.SessionRepoFn, c.workerStatusUpdateTimes, c.kms)
pbs.RegisterServerCoordinationServiceServer(workerServer, workerService)
pbs.RegisterSessionServiceServer(workerServer, workerService)
@@ -11,7 +11,6 @@ import (
"github.com/hashicorp/boundary/internal/scheduler"
"github.com/hashicorp/boundary/internal/servers/controller/common"
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/go-hclog"
)
// sessionCleanupJob defines a periodic job that monitors workers for
@@ -24,7 +23,6 @@ import (
// the controller will win out and order that the connections be
// closed on the worker.
type sessionCleanupJob struct {
logger hclog.Logger
sessionRepoFn common.SessionRepoFactory
// The amount of time to give disconnected workers before marking
@@ -37,14 +35,11 @@ type sessionCleanupJob struct {
// newSessionCleanupJob instantiates the session cleanup job.
func newSessionCleanupJob(
logger hclog.Logger,
sessionRepoFn common.SessionRepoFactory,
gracePeriod int,
) (*sessionCleanupJob, error) {
const op = "controller.newNewSessionCleanupJob"
switch {
case logger == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing logger")
case sessionRepoFn == nil:
return nil, errors.NewDeprecated(errors.InvalidParameter, op, "missing sessionRepoFn")
case gracePeriod < session.DeadWorkerConnCloseMinGrace:
@@ -53,7 +48,6 @@ func newSessionCleanupJob(
}
return &sessionCleanupJob{
logger: logger,
sessionRepoFn: sessionRepoFn,
gracePeriod: gracePeriod,
}, nil
@@ -13,7 +13,6 @@ import (
"github.com/hashicorp/boundary/internal/scheduler"
"github.com/hashicorp/boundary/internal/servers"
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/go-hclog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -96,7 +95,6 @@ func TestSessionCleanupJob(t *testing.T) {
// Create the job.
job, err := newSessionCleanupJob(
hclog.New(&hclog.LoggerOptions{Level: hclog.Trace}),
func() (*session.Repository, error) { return sessionRepo, nil },
session.DeadWorkerConnCloseMinGrace,
)
@@ -145,16 +143,7 @@ func TestSessionCleanupJobNewJobErr(t *testing.T) {
const op = "controller.newNewSessionCleanupJob"
require := require.New(t)
job, err := newSessionCleanupJob(nil, nil, 0)
require.Equal(err, errors.E(
ctx,
errors.WithCode(errors.InvalidParameter),
errors.WithOp(op),
errors.WithMsg("missing logger"),
))
require.Nil(job)
job, err = newSessionCleanupJob(hclog.New(nil), nil, 0)
job, err := newSessionCleanupJob(nil, 0)
require.Equal(err, errors.E(
ctx,
errors.WithCode(errors.InvalidParameter),
@@ -163,7 +152,7 @@ func TestSessionCleanupJobNewJobErr(t *testing.T) {
))
require.Nil(job)
job, err = newSessionCleanupJob(hclog.New(nil), func() (*session.Repository, error) { return nil, nil }, 0)
job, err = newSessionCleanupJob(func() (*session.Repository, error) { return nil, nil }, 0)
require.Equal(err, errors.E(
ctx,
errors.WithCode(errors.InvalidParameter),
+2 -7
View File
@@ -135,6 +135,7 @@ func (w *Worker) Start() error {
// doable, but work for later.
func (w *Worker) Shutdown(skipListeners bool) error {
const op = "worker.(Worker).Shutdown"
ctx := context.TODO()
if !w.started.Load() {
event.WriteSysEvent(context.TODO(), op, "already shut down, skipping")
return nil
@@ -142,31 +143,27 @@ func (w *Worker) Shutdown(skipListeners bool) error {
// Stop listeners first to prevent new connections to the
// controller.
w.logger.Debug("beginning shutdown")
defer w.started.Store(false)
w.Resolver().UpdateState(resolver.State{Addresses: []resolver.Address{}})
w.baseCancel()
if !skipListeners {
w.logger.Debug("stopping listeners")
if err := w.stopListeners(); err != nil {
return fmt.Errorf("error stopping worker listeners: %w", err)
}
}
// Shut down all connections.
w.logger.Debug("shutting down all connections due to worker shutdown or reload")
w.cleanupConnections(w.baseContext, true)
// Wait for next status request to succeed. Don't wait too long;
// wrap the base context in a timeout equal to our status grace
// period.
w.logger.Debug("waiting for next status report to controller")
waitStatusStart := time.Now()
nextStatusCtx, nextStatusCancel := context.WithTimeout(w.baseContext, w.conf.StatusGracePeriodDuration)
defer nextStatusCancel()
for {
if err := nextStatusCtx.Err(); err != nil {
w.logger.Error("error waiting for next status report to controller", "err", err)
event.WriteError(ctx, op, err, event.WithInfoMsg("error waiting for next status report to controller"))
break
}
@@ -178,7 +175,6 @@ func (w *Worker) Shutdown(skipListeners bool) error {
}
// Proceed with remainder of shutdown.
w.logger.Debug("canceling base context and shutting down connection to controller")
w.baseCancel()
w.Resolver().UpdateState(resolver.State{Addresses: []resolver.Address{}})
@@ -190,7 +186,6 @@ func (w *Worker) Shutdown(skipListeners bool) error {
}
}
w.logger.Debug("shutdown successful")
return nil
}
@@ -146,7 +146,7 @@ func testWorkerSessionCleanupSingle(burdenCase timeoutBurdenType) func(t *testin
require.NotNil(tgt)
// Create test server, update default port on target
ts := helper.NewTestTcpServer(t, logger)
ts := helper.NewTestTcpServer(t)
require.NotNil(t, ts)
defer ts.Close()
tgt, err = tcl.Update(ctx, tgt.Item.Id, tgt.Item.Version, targets.WithTcpTargetDefaultPort(ts.Port()), targets.WithSessionConnectionLimit(-1))
@@ -154,7 +154,7 @@ func testWorkerSessionCleanupSingle(burdenCase timeoutBurdenType) func(t *testin
require.NotNil(tgt)
// Authorize and connect
sess := helper.NewTestSession(ctx, t, logger, tcl, "ttcp_1234567890")
sess := helper.NewTestSession(ctx, t, tcl, "ttcp_1234567890")
sConn := sess.Connect(ctx, t)
// Run initial send/receive test, make sure things are working
@@ -222,7 +222,7 @@ func testWorkerSessionCleanupSingle(burdenCase timeoutBurdenType) func(t *testin
// Proceed with new connection test
event.WriteSysEvent(ctx, op, "connecting to new session after resuming controller/worker link")
sess = helper.NewTestSession(ctx, t, logger, tcl, "ttcp_1234567890") // re-assign, other connection will close in t.Cleanup()
sess = helper.NewTestSession(ctx, t, tcl, "ttcp_1234567890") // re-assign, other connection will close in t.Cleanup()
sConn = sess.Connect(ctx, t)
sConn.TestSendRecvAll(t)
}
@@ -329,7 +329,7 @@ func testWorkerSessionCleanupMulti(burdenCase timeoutBurdenType) func(t *testing
require.NotNil(tgt)
// Create test server, update default port on target
ts := helper.NewTestTcpServer(t, logger)
ts := helper.NewTestTcpServer(t)
require.NotNil(ts)
defer ts.Close()
tgt, err = tcl.Update(ctx, tgt.Item.Id, tgt.Item.Version, targets.WithTcpTargetDefaultPort(ts.Port()), targets.WithSessionConnectionLimit(-1))
@@ -337,7 +337,7 @@ func testWorkerSessionCleanupMulti(burdenCase timeoutBurdenType) func(t *testing
require.NotNil(tgt)
// Authorize and connect
sess := helper.NewTestSession(ctx, t, logger, tcl, "ttcp_1234567890")
sess := helper.NewTestSession(ctx, t, tcl, "ttcp_1234567890")
sConn := sess.Connect(ctx, t)
// Run initial send/receive test, make sure things are working
@@ -424,7 +424,7 @@ func testWorkerSessionCleanupMulti(burdenCase timeoutBurdenType) func(t *testing
// Proceed with new connection test
event.WriteSysEvent(ctx, op, "connecting to new session after resuming controller/worker link")
sess = helper.NewTestSession(ctx, t, logger, tcl, "ttcp_1234567890") // re-assign, other connection will close in t.Cleanup()
sess = helper.NewTestSession(ctx, t, tcl, "ttcp_1234567890") // re-assign, other connection will close in t.Cleanup()
sConn = sess.Connect(ctx, t)
sConn.TestSendRecvAll(t)
}
+16 -22
View File
@@ -24,7 +24,6 @@ import (
"github.com/hashicorp/boundary/internal/servers/worker"
"github.com/hashicorp/boundary/internal/session"
"github.com/hashicorp/go-cleanhttp"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-secure-stdlib/base62"
"github.com/mr-tron/base58"
"github.com/stretchr/testify/assert"
@@ -60,7 +59,6 @@ type TestSession struct {
transport *http.Transport
tofuToken string
connectionsLeft int32
logger hclog.Logger
}
// NewTestSession authorizes a session and creates all of the data
@@ -68,7 +66,6 @@ type TestSession struct {
func NewTestSession(
ctx context.Context,
t *testing.T,
logger hclog.Logger,
tcl *targets.Client,
targetId string,
) *TestSession {
@@ -80,7 +77,6 @@ func NewTestSession(
s := &TestSession{
sessionId: sar.Item.SessionId,
logger: logger,
}
authzString := sar.GetItem().(*targets.SessionAuthorization).AuthorizationToken
marshaled, err := base58.FastBase58Decoding(authzString)
@@ -232,7 +228,7 @@ func (s *TestSession) ExpectConnectionStateOnController(
// Assert
require.Equal(expectStates, actualStates)
s.logger.Debug("successfully asserted all connection states on controller", "expected_states", expectStates, "actual_states", actualStates)
t.Log("successfully asserted all connection states on controller", "expected_states", expectStates, "actual_states", actualStates)
}
// ExpectConnectionStateOnWorker waits until all connections in a
@@ -288,7 +284,7 @@ func (s *TestSession) ExpectConnectionStateOnWorker(
// Assert
require.Equal(expectStates, actualStates)
s.logger.Debug("successfully asserted all connection states on worker", "expected_states", expectStates, "actual_states", actualStates)
t.Log("successfully asserted all connection states on worker", "expected_states", expectStates, "actual_states", actualStates)
}
func (s *TestSession) testWorkerConnectionInfo(t *testing.T, tw *worker.TestWorker) map[string]worker.TestConnectionInfo {
@@ -319,8 +315,7 @@ func (s *TestSession) testWorkerConnectionIds(t *testing.T, tw *worker.TestWorke
// TestSessionConnection abstracts a connected session.
type TestSessionConnection struct {
conn net.Conn
logger hclog.Logger
conn net.Conn
}
// Connect returns a TestSessionConnection for a TestSession. Check
@@ -339,8 +334,7 @@ func (s *TestSession) Connect(
require.NotNil(conn)
return &TestSessionConnection{
conn: conn,
logger: s.logger,
conn: conn,
}
}
@@ -364,7 +358,7 @@ func (c *TestSessionConnection) testSendRecv(t *testing.T) bool {
// Shuttle over the sequence number as base64.
err := binary.Write(c.conn, binary.LittleEndian, i)
if err != nil {
c.logger.Debug("received error during write", "err", err)
t.Log("received error during write", "err", err)
if errors.Is(err, net.ErrClosed) ||
errors.Is(err, io.EOF) ||
errors.Is(err, websocket.CloseError{Code: websocket.StatusPolicyViolation, Reason: "timed out"}) {
@@ -378,7 +372,7 @@ func (c *TestSessionConnection) testSendRecv(t *testing.T) bool {
var j uint32
err = binary.Read(c.conn, binary.LittleEndian, &j)
if err != nil {
c.logger.Debug("received error during read", "err", err, "num_successfully_sent", i)
t.Log("received error during read", "err", err, "num_successfully_sent", i)
if errors.Is(err, net.ErrClosed) ||
errors.Is(err, io.EOF) ||
errors.Is(err, websocket.CloseError{Code: websocket.StatusPolicyViolation, Reason: "timed out"}) {
@@ -394,7 +388,7 @@ func (c *TestSessionConnection) testSendRecv(t *testing.T) bool {
// time.Sleep(time.Second)
}
c.logger.Debug("finished send/recv successfully", "num_successfully_sent", testSendRecvSendMax)
t.Log("finished send/recv successfully", "num_successfully_sent", testSendRecvSendMax)
return true
}
@@ -403,7 +397,7 @@ func (c *TestSessionConnection) testSendRecv(t *testing.T) bool {
func (c *TestSessionConnection) TestSendRecvAll(t *testing.T) {
t.Helper()
require.True(t, c.testSendRecv(t))
c.logger.Debug("successfully asserted send/recv as passing")
t.Log("successfully asserted send/recv as passing")
}
// TestSendRecvFail asserts that we were able to send/recv all pings
@@ -411,15 +405,15 @@ func (c *TestSessionConnection) TestSendRecvAll(t *testing.T) {
func (c *TestSessionConnection) TestSendRecvFail(t *testing.T) {
t.Helper()
require.False(t, c.testSendRecv(t))
c.logger.Debug("successfully asserted send/recv as failing")
t.Log("successfully asserted send/recv as failing")
}
// TestTcpServer defines a simple testing TCP server. Data is simply
// copied from its input to its output.
type TestTcpServer struct {
logger hclog.Logger
ln net.Listener
conns map[string]net.Conn
t *testing.T
ln net.Listener
conns map[string]net.Conn
}
// Port returns the port number for the test server listener.
@@ -458,7 +452,7 @@ func (ts *TestTcpServer) run() {
conn, err := ts.ln.Accept()
if err != nil {
if !errors.Is(err, net.ErrClosed) {
ts.logger.Error("Accept() error in TestTcpServer", "err", err)
ts.t.Error("Accept() error in TestTcpServer", "err", err)
}
return
@@ -474,12 +468,12 @@ func (ts *TestTcpServer) run() {
}
// NewTestTcpServer creates a TestTcpServer and runs it.
func NewTestTcpServer(t *testing.T, logger hclog.Logger) *TestTcpServer {
func NewTestTcpServer(t *testing.T) *TestTcpServer {
t.Helper()
require := require.New(t)
ts := &TestTcpServer{
logger: logger,
conns: make(map[string]net.Conn),
t: t,
conns: make(map[string]net.Conn),
}
var err error
ts.ln, err = net.Listen("tcp", ":0")