Files
threshold/internal/target/options.go
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

171 lines
4.2 KiB
Go
Raw Normal View History

2020-08-26 13:58:46 -04:00
package target
import (
"time"
"github.com/hashicorp/boundary/internal/types/subtypes"
)
2021-09-29 13:13:49 -04:00
// GetOpts - iterate the inbound Options and return a struct
func GetOpts(opt ...Option) options {
2020-08-26 13:58:46 -04:00
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 {
2021-09-29 13:13:49 -04:00
WithName string
WithDescription string
WithDefaultPort uint32
WithLimit int
WithScopeId string
WithScopeIds []string
WithScopeName string
WithUserId string
WithType subtypes.Subtype
2021-09-29 13:13:49 -04:00
WithHostSources []string
WithCredentialLibraries []*CredentialLibrary
2021-09-29 13:13:49 -04:00
WithSessionMaxSeconds uint32
WithSessionConnectionLimit int32
WithPublicId string
WithWorkerFilter string
WithTargetIds []string
2020-08-26 13:58:46 -04:00
}
func getDefaultOptions() options {
return options{
2021-09-29 13:13:49 -04:00
WithName: "",
WithDescription: "",
WithLimit: 0,
WithDefaultPort: 0,
WithScopeId: "",
WithScopeIds: nil,
WithScopeName: "",
WithUserId: "",
WithType: "",
2021-09-29 13:13:49 -04:00
WithHostSources: nil,
WithCredentialLibraries: nil,
2021-09-29 13:13:49 -04:00
WithSessionMaxSeconds: uint32((8 * time.Hour).Seconds()),
WithSessionConnectionLimit: 1,
WithPublicId: "",
WithWorkerFilter: "",
2020-08-26 13:58:46 -04:00
}
}
// WithDescription provides an optional description
func WithDescription(desc string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithDescription = desc
2020-08-26 13:58:46 -04:00
}
}
// WithName provides an option to search by a friendly name
func WithName(name string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithName = name
2020-08-26 13:58:46 -04:00
}
}
// 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) {
2021-09-29 13:13:49 -04:00
o.WithLimit = limit
2020-08-26 13:58:46 -04:00
}
}
// WithDefaultPort provides an option to specify the default target port.
func WithDefaultPort(p uint32) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithDefaultPort = p
2020-08-26 13:58:46 -04:00
}
}
// WithScopeId provides an option to search by a scope id
func WithScopeId(scopeId string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithScopeId = scopeId
2020-08-26 13:58:46 -04:00
}
}
2021-01-25 19:37:40 -05:00
// WithScopeId provides an option to search by multiple scope id
func WithScopeIds(scopeIds []string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithScopeIds = scopeIds
2021-01-25 19:37:40 -05:00
}
}
// WithScopeId provides an option to search by a scope name
func WithScopeName(scopeName string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithScopeName = scopeName
}
}
2020-08-26 13:58:46 -04:00
// WithUserId provides an option to search by a user public id
func WithUserId(userId string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithUserId = userId
2020-08-26 13:58:46 -04:00
}
}
// WithType provides an option to search by a target type
func WithType(t subtypes.Subtype) Option {
2020-08-26 13:58:46 -04:00
return func(o *options) {
o.WithType = t
2020-08-26 13:58:46 -04:00
}
}
// WithHostSources provides an option for providing a list of host source ids
func WithHostSources(hs []string) Option {
2020-08-26 13:58:46 -04:00
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithHostSources = hs
2020-08-26 13:58:46 -04:00
}
}
// 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) {
2021-09-29 13:13:49 -04:00
o.WithSessionMaxSeconds = dur
}
}
func WithSessionConnectionLimit(limit int32) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithSessionConnectionLimit = limit
}
}
2020-09-24 03:31:26 -04:00
// WithPublicId provides an optional public id
func WithPublicId(id string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithPublicId = id
2020-09-24 03:31:26 -04:00
}
}
2021-01-21 16:27:20 -05:00
// WithWorkerFilter provides an optional worker filter
func WithWorkerFilter(filter string) Option {
return func(o *options) {
2021-09-29 13:13:49 -04:00
o.WithWorkerFilter = filter
2021-01-21 16:27:20 -05:00
}
}
// WithTargetIds provides an option to search by specific target IDs
func WithTargetIds(with []string) Option {
return func(o *options) {
o.WithTargetIds = with
}
}