* Remove the server_id from session table, change it to worker_id on session_connection This is step 1 in updating the worker table. The worker is becoming a public resource so it must have a public id. We drop the server_id column on the session_connection table and add the worker_id column so we can use the wt_public_key type. Since db migrations are applied while the controller is offline, it should be safe to assume all session connections are not in a running state, thus allowing us to null out all the worker ids in the session_connection table. For now we don't have very good enforcement of the wt_public_id constraints, since the id is currently defined in the worker config, but this will soon change and the worker's id will be generated by the controller.
115 lines
2.8 KiB
Go
115 lines
2.8 KiB
Go
package session
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/hashicorp/boundary/internal/db"
|
|
"github.com/hashicorp/boundary/internal/db/timestamp"
|
|
)
|
|
|
|
// getOpts - iterate the inbound Options and return a struct
|
|
func getOpts(opt ...Option) options {
|
|
opts := getDefaultOptions()
|
|
for _, o := range opt {
|
|
o(&opts)
|
|
}
|
|
return opts
|
|
}
|
|
|
|
// Option - how Options are passed as arguments
|
|
type Option func(*options)
|
|
|
|
// options = how options are represented
|
|
type options struct {
|
|
withLimit int
|
|
withOrderByCreateTime db.OrderBy
|
|
withScopeIds []string
|
|
withUserId string
|
|
withExpirationTime *timestamp.Timestamp
|
|
withTestTofu []byte
|
|
withListingConvert bool
|
|
withSessionIds []string
|
|
withDbOpts []db.Option
|
|
withWorkerStateDelay time.Duration
|
|
}
|
|
|
|
func getDefaultOptions() options {
|
|
return options{
|
|
withWorkerStateDelay: 10 * time.Second,
|
|
}
|
|
}
|
|
|
|
// WithLimit provides an option to provide a limit. Intentionally allowing
|
|
// negative integers. If WithLimit < 0, then unlimited results are returned. If
|
|
// WithLimit == 0, then default limits are used for results.
|
|
func WithLimit(limit int) Option {
|
|
return func(o *options) {
|
|
o.withLimit = limit
|
|
}
|
|
}
|
|
|
|
// WithOrderByCreateTime provides an option to specify ordering by the
|
|
// CreateTime field.
|
|
func WithOrderByCreateTime(orderBy db.OrderBy) Option {
|
|
return func(o *options) {
|
|
o.withOrderByCreateTime = orderBy
|
|
}
|
|
}
|
|
|
|
// WithScopeIds allows specifying a scope ID criteria for the function.
|
|
func WithScopeIds(scopeIds []string) Option {
|
|
return func(o *options) {
|
|
o.withScopeIds = scopeIds
|
|
}
|
|
}
|
|
|
|
// WithUserId allows specifying a user ID criteria for the function.
|
|
func WithUserId(userId string) Option {
|
|
return func(o *options) {
|
|
o.withUserId = userId
|
|
}
|
|
}
|
|
|
|
// WithExpirationTime allows specifying an expiration time for the session
|
|
func WithExpirationTime(exp *timestamp.Timestamp) Option {
|
|
return func(o *options) {
|
|
o.withExpirationTime = exp
|
|
}
|
|
}
|
|
|
|
// WithTestTofu allows specifying a test tofu for a test session
|
|
func WithTestTofu(tofu []byte) Option {
|
|
return func(o *options) {
|
|
o.withTestTofu = tofu
|
|
}
|
|
}
|
|
|
|
// WithSessionIds allows the specification of the session ids to use for the
|
|
// operation.
|
|
func WithSessionIds(ids ...string) Option {
|
|
return func(o *options) {
|
|
o.withSessionIds = ids
|
|
}
|
|
}
|
|
|
|
func withListingConvert(withListingConvert bool) Option {
|
|
return func(o *options) {
|
|
o.withListingConvert = withListingConvert
|
|
}
|
|
}
|
|
|
|
// WithDbOpts passes through given DB options to the DB layer
|
|
func WithDbOpts(opts ...db.Option) Option {
|
|
return func(o *options) {
|
|
o.withDbOpts = opts
|
|
}
|
|
}
|
|
|
|
// WithWorkerStateDelay is used by queries to account for a delay in state
|
|
// propagation between worker and controller.
|
|
func WithWorkerStateDelay(d time.Duration) Option {
|
|
return func(o *options) {
|
|
o.withWorkerStateDelay = d
|
|
}
|
|
}
|