Files
threshold/internal/target/options.go
T
Timothy Messier 2cc58ff901 refact(target): Change repository to take CredentialLibraries
This change removes the hard-coded credential purpose for the Credential
Libraries. It also moves the logic of creating CredentialLibraries from
CredentialSources out of the repository and into the targets.Service.
This refactor will allow for additional credential purposes to be
supported in both the service and the repository.
2021-10-29 10:01:52 -04:00

164 lines
4.0 KiB
Go

package target
import (
"time"
"github.com/hashicorp/boundary/internal/types/subtypes"
)
// 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 {
WithName string
WithDescription string
WithDefaultPort uint32
WithLimit int
WithScopeId string
WithScopeIds []string
WithScopeName string
WithUserId string
WithType subtypes.Subtype
WithHostSources []string
WithCredentialLibraries []*CredentialLibrary
WithSessionMaxSeconds uint32
WithSessionConnectionLimit int32
WithPublicId string
WithWorkerFilter string
}
func getDefaultOptions() options {
return options{
WithName: "",
WithDescription: "",
WithLimit: 0,
WithDefaultPort: 0,
WithScopeId: "",
WithScopeIds: nil,
WithScopeName: "",
WithUserId: "",
WithType: "",
WithHostSources: nil,
WithCredentialLibraries: nil,
WithSessionMaxSeconds: uint32((8 * time.Hour).Seconds()),
WithSessionConnectionLimit: 1,
WithPublicId: "",
WithWorkerFilter: "",
}
}
// WithDescription provides an optional description
func WithDescription(desc string) Option {
return func(o *options) {
o.WithDescription = desc
}
}
// WithName provides an option to search by a friendly name
func WithName(name string) Option {
return func(o *options) {
o.WithName = name
}
}
// 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
}
}
// WithDefaultPort provides an option to specify the default target port.
func WithDefaultPort(p uint32) Option {
return func(o *options) {
o.WithDefaultPort = p
}
}
// WithScopeId provides an option to search by a scope id
func WithScopeId(scopeId string) Option {
return func(o *options) {
o.WithScopeId = scopeId
}
}
// WithScopeId provides an option to search by multiple scope id
func WithScopeIds(scopeIds []string) Option {
return func(o *options) {
o.WithScopeIds = scopeIds
}
}
// WithScopeId provides an option to search by a scope name
func WithScopeName(scopeName string) Option {
return func(o *options) {
o.WithScopeName = scopeName
}
}
// WithUserId provides an option to search by a user public id
func WithUserId(userId string) Option {
return func(o *options) {
o.WithUserId = userId
}
}
// WithType provides an option to search by a target type
func WithType(t subtypes.Subtype) Option {
return func(o *options) {
o.WithType = t
}
}
// WithHostSources provides an option for providing a list of host source ids
func WithHostSources(hs []string) Option {
return func(o *options) {
o.WithHostSources = hs
}
}
// WithCredentialLibraries provides an option for providing a list of credential libraries.
func WithCredentialLibraries(cl []*CredentialLibrary) Option {
return func(o *options) {
o.WithCredentialLibraries = cl
}
}
func WithSessionMaxSeconds(dur uint32) Option {
return func(o *options) {
o.WithSessionMaxSeconds = dur
}
}
func WithSessionConnectionLimit(limit int32) Option {
return func(o *options) {
o.WithSessionConnectionLimit = limit
}
}
// WithPublicId provides an optional public id
func WithPublicId(id string) Option {
return func(o *options) {
o.WithPublicId = id
}
}
// WithWorkerFilter provides an optional worker filter
func WithWorkerFilter(filter string) Option {
return func(o *options) {
o.WithWorkerFilter = filter
}
}