Files
threshold/internal/target/options.go
T

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

286 lines
7.6 KiB
Go
Raw Normal View History

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
2023-02-02 17:15:17 -08:00
2020-08-26 13:58:46 -04:00
package target
import (
2023-05-18 12:11:11 -04:00
"net"
"time"
"github.com/hashicorp/boundary/globals"
talias "github.com/hashicorp/boundary/internal/alias/target"
2023-05-18 12:11:11 -04:00
intglobals "github.com/hashicorp/boundary/internal/globals"
2023-10-24 09:40:46 -07:00
"github.com/hashicorp/boundary/internal/pagination"
"github.com/hashicorp/boundary/internal/perms"
)
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
WithDefaultClientPort uint32
2021-09-29 13:13:49 -04:00
WithLimit int
2022-07-20 16:24:46 -07:00
WithProjectId string
WithProjectIds []string
WithProjectName string
2021-09-29 13:13:49 -04:00
WithUserId string
WithType globals.Subtype
2021-09-29 13:13:49 -04:00
WithHostSources []string
WithCredentialLibraries []*CredentialLibrary
WithStaticCredentials []*StaticCredential
2021-09-29 13:13:49 -04:00
WithSessionMaxSeconds uint32
WithSessionConnectionLimit int32
WithPermissions []perms.Permission
2021-09-29 13:13:49 -04:00
WithPublicId string
WithWorkerFilter string
2023-05-18 12:11:11 -04:00
WithTestWorkerFilter string
WithEgressWorkerFilter string
WithIngressWorkerFilter string
WithTargetIds []string
WithAddress string
WithStorageBucketId string
WithEnableSessionRecording bool
2023-05-18 12:11:11 -04:00
WithNetResolver intglobals.NetIpResolver
2023-10-24 09:40:46 -07:00
WithStartPageAfterItem pagination.Item
withAliases []*talias.Alias
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,
WithDefaultClientPort: 0,
2022-07-20 16:24:46 -07:00
WithProjectId: "",
WithProjectIds: nil,
WithProjectName: "",
2021-09-29 13:13:49 -04:00
WithUserId: "",
WithType: "",
2021-09-29 13:13:49 -04:00
WithHostSources: nil,
WithCredentialLibraries: nil,
WithStaticCredentials: nil,
2021-09-29 13:13:49 -04:00
WithSessionMaxSeconds: uint32((8 * time.Hour).Seconds()),
WithSessionConnectionLimit: -1,
WithPermissions: nil,
2021-09-29 13:13:49 -04:00
WithPublicId: "",
WithWorkerFilter: "",
2023-05-18 12:11:11 -04:00
WithTestWorkerFilter: "",
WithEgressWorkerFilter: "",
WithIngressWorkerFilter: "",
WithAddress: "",
2023-05-18 12:11:11 -04:00
WithNetResolver: net.DefaultResolver,
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
}
}
// WithDefaultClientPort provides an option to specify the default client listening port.
func WithDefaultClientPort(p uint32) Option {
return func(o *options) {
o.WithDefaultClientPort = p
}
}
2022-07-20 16:24:46 -07:00
// WithProjectId provides an option to search by a project id
func WithProjectId(projectId string) Option {
2020-08-26 13:58:46 -04:00
return func(o *options) {
2022-07-20 16:24:46 -07:00
o.WithProjectId = projectId
2020-08-26 13:58:46 -04:00
}
}
2022-07-20 16:24:46 -07:00
// WithProjectId provides an option to search by multiple project id
func WithProjectIds(projectIds []string) Option {
2021-01-25 19:37:40 -05:00
return func(o *options) {
2022-07-20 16:24:46 -07:00
o.WithProjectIds = projectIds
2021-01-25 19:37:40 -05:00
}
}
2022-07-20 16:24:46 -07:00
// WithProjectId provides an option to search by a project name
func WithProjectName(projectName string) Option {
return func(o *options) {
2022-07-20 16:24:46 -07:00
o.WithProjectName = projectName
}
}
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 globals.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
}
}
// WithStaticCredentials provides an option for providing a list of static credentials.
func WithStaticCredentials(c []*StaticCredential) Option {
return func(o *options) {
o.WithStaticCredentials = c
}
}
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
}
}
2023-05-18 12:11:11 -04:00
// WithTestWorkerFilter provides an optional worker filter used only in testing
func WithTestWorkerFilter(filter string) Option {
return func(o *options) {
o.WithTestWorkerFilter = filter
}
}
// WithEgressWorkerFilter provides an optional egress worker filter
func WithEgressWorkerFilter(filter string) Option {
return func(o *options) {
o.WithEgressWorkerFilter = filter
}
}
// WithIngressWorkerFilter provides an optional ingress worker filter
func WithIngressWorkerFilter(filter string) Option {
return func(o *options) {
o.WithIngressWorkerFilter = filter
}
}
// WithTargetIds provides an option to search by specific target IDs
func WithTargetIds(with []string) Option {
return func(o *options) {
o.WithTargetIds = with
}
}
// WithPermissions is used by this repo to restrict a list
// request's results based on the given set of permissions.
func WithPermissions(perms []perms.Permission) Option {
return func(o *options) {
o.WithPermissions = perms
}
}
// WithAddress provides an optional network address
func WithAddress(address string) Option {
return func(o *options) {
o.WithAddress = address
}
}
// WithEnableSessionRecording provides an option to enable session recording on
// the target
func WithEnableSessionRecording(enable bool) Option {
return func(o *options) {
o.WithEnableSessionRecording = enable
}
}
// WithStorageBucketId provides an option to set a storage bucket on a target
func WithStorageBucketId(id string) Option {
return func(o *options) {
o.WithStorageBucketId = id
}
}
2023-05-18 12:11:11 -04:00
// WithNetResolver provides an option to specify a custom DNS resolver
func WithNetResolver(resolver intglobals.NetIpResolver) Option {
return func(o *options) {
o.WithNetResolver = resolver
}
}
2023-10-24 09:40:46 -07:00
// WithStartPageAfterItem is used to paginate over the results.
// The next page will start after the provided item.
func WithStartPageAfterItem(item pagination.Item) Option {
return func(o *options) {
o.WithStartPageAfterItem = item
}
}
// WithAliases provides an option to provide aliases.
func WithAliases(in []*talias.Alias) Option {
return func(o *options) {
o.withAliases = in
}
}