persistence

package
v2.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfigTuningEntry = ConfigTuningEntry{
	ProviderTimeoutSeconds:            30,
	ProviderTimeoutExpiryLeewayFactor: 1.5,
	RefreshCheckIntervalSeconds:       60,
	RefreshExpiryDeltaFactor:          1.2,
	ReapCheckIntervalSeconds:          300,
	ReapDryRun:                        false,
	ReapNonRefreshableSeconds:         86400,
	ReapRevokedSeconds:                3600,
	ReapTransientErrorAttempts:        10,
	ReapTransientErrorSeconds:         86400,
}

Functions

func IsConfigKey

func IsConfigKey(key string) bool

Types

type AuthCodeEntry

type AuthCodeEntry struct {
	// We embed a *provider.Token as the base type. This ensures compatibility
	// and keeps storage size reasonable because this will be the default
	// configuration.
	*provider.Token `json:",inline"`

	// LastIssueTime is the most recent time a token was successfully issued.
	LastIssueTime time.Time `json:"last_issue_time,omitempty"`

	// UserError is used to store a permanent error that indicates the end of
	// this token's usable lifespan.
	UserError string `json:"user_error,omitempty"`

	// TransientErrorsSinceLastIssue is a counter of the number of transient
	// errors encountered since the last time the token was successfully issued
	// (either originally or by refresh).
	TransientErrorsSinceLastIssue int `json:"transient_errors_since_last_issue,omitempty"`

	// If TransientErrorsSinceLastIssue > 0, this holds the last transient error
	// encountered to include as a warning (if the token is still valid) or
	// error on the response.
	LastTransientError string `json:"last_transient_error,omitempty"`

	// If the most recent exchange did not succeed, this holds the time that
	// exchange occurred.
	LastAttemptedIssueTime time.Time `json:"last_attempted_issue_time,omitempty"`
}

func (*AuthCodeEntry) SetToken

func (ace *AuthCodeEntry) SetToken(tok *provider.Token)

func (*AuthCodeEntry) SetTransientError

func (ace *AuthCodeEntry) SetTransientError(err string)

func (*AuthCodeEntry) SetUserError

func (ace *AuthCodeEntry) SetUserError(err string)

func (*AuthCodeEntry) TokenIssued

func (ace *AuthCodeEntry) TokenIssued() bool

TokenIssued indicates whether a token has been issued at all.

For certain grant types, like device code flow, we may not have an access token yet. In that case, we must wait for a polling process to update this value. A temporary error will be returned.

type AuthCodeKey

type AuthCodeKey string

func (AuthCodeKey) AuthCodeKey

func (ack AuthCodeKey) AuthCodeKey() string

func (AuthCodeKey) DeviceAuthKey

func (ack AuthCodeKey) DeviceAuthKey() string

type AuthCodeKeyer

type AuthCodeKeyer interface {
	// AuthCodeKey returns the storage key for storing AuthCodeEntry objects.
	AuthCodeKey() string

	// DeviceAuthKey returns the storage key for storing DeviceAuthEntry
	// objects.
	DeviceAuthKey() string
}

func AuthCodeName

func AuthCodeName(name string) AuthCodeKeyer

type AuthCodeManager

type AuthCodeManager struct {
	// contains filtered or unexported fields
}

func (*AuthCodeManager) DeleteAuthCodeEntry

func (acm *AuthCodeManager) DeleteAuthCodeEntry(ctx context.Context, keyer AuthCodeKeyer) error

func (*AuthCodeManager) DeleteDeviceAuthEntry

func (acm *AuthCodeManager) DeleteDeviceAuthEntry(ctx context.Context, keyer AuthCodeKeyer) error

func (*AuthCodeManager) ForEachAuthCodeKey

func (acm *AuthCodeManager) ForEachAuthCodeKey(ctx context.Context, fn func(AuthCodeKeyer)) error

func (*AuthCodeManager) ForEachDeviceAuthKey

func (acm *AuthCodeManager) ForEachDeviceAuthKey(ctx context.Context, fn func(AuthCodeKeyer)) error

func (*AuthCodeManager) ReadAuthCodeEntry

func (acm *AuthCodeManager) ReadAuthCodeEntry(ctx context.Context, keyer AuthCodeKeyer) (*AuthCodeEntry, error)

func (*AuthCodeManager) ReadDeviceAuthEntry

func (acm *AuthCodeManager) ReadDeviceAuthEntry(ctx context.Context, keyer AuthCodeKeyer) (*DeviceAuthEntry, error)

func (*AuthCodeManager) WithLock

func (acm *AuthCodeManager) WithLock(keyer AuthCodeKeyer, fn func(*LockedAuthCodeManager) error) error

func (*AuthCodeManager) WriteAuthCodeEntry

func (acm *AuthCodeManager) WriteAuthCodeEntry(ctx context.Context, keyer AuthCodeKeyer, entry *AuthCodeEntry) error

func (*AuthCodeManager) WriteDeviceAuthEntry

func (acm *AuthCodeManager) WriteDeviceAuthEntry(ctx context.Context, keyer AuthCodeKeyer, entry *DeviceAuthEntry) error

type ClientCredsEntry

type ClientCredsEntry struct {
	Token *provider.Token `json:"token"`

	Config struct {
		Scopes          []string          `json:"scopes"`
		TokenURLParams  map[string]string `json:"token_url_params"`
		ProviderOptions map[string]string `json:"provider_options"`
	} `json:"config"`
}

type ClientCredsKey

type ClientCredsKey string

func (ClientCredsKey) ClientCredsKey

func (ack ClientCredsKey) ClientCredsKey() string

type ClientCredsKeyer

type ClientCredsKeyer interface {
	// ClientCredsKey returns the storage key for storing ClientCredsEntry
	// objects.
	ClientCredsKey() string
}

func ClientCredsName

func ClientCredsName(name string) ClientCredsKeyer

type ClientCredsManager

type ClientCredsManager struct {
	// contains filtered or unexported fields
}

func (*ClientCredsManager) DeleteClientCredsEntry

func (ccm *ClientCredsManager) DeleteClientCredsEntry(ctx context.Context, keyer ClientCredsKeyer) error

func (*ClientCredsManager) ForEachClientCredsKey

func (ccm *ClientCredsManager) ForEachClientCredsKey(ctx context.Context, fn func(ClientCredsKeyer)) error

func (*ClientCredsManager) ReadClientCredsEntry

func (ccm *ClientCredsManager) ReadClientCredsEntry(ctx context.Context, keyer ClientCredsKeyer) (*ClientCredsEntry, error)

func (*ClientCredsManager) WithLock

func (*ClientCredsManager) WriteClientCredsEntry

func (ccm *ClientCredsManager) WriteClientCredsEntry(ctx context.Context, keyer ClientCredsKeyer, entry *ClientCredsEntry) error

type ConfigEntry

type ConfigEntry struct {
	Version         ConfigVersion     `json:"version"`
	ClientID        string            `json:"client_id"`
	ClientSecret    string            `json:"client_secret"`
	AuthURLParams   map[string]string `json:"auth_url_params"`
	ProviderName    string            `json:"provider_name"`
	ProviderVersion int               `json:"provider_version"`
	ProviderOptions map[string]string `json:"provider_options"`
	Tuning          ConfigTuningEntry `json:"tuning"`
}

type ConfigManager

type ConfigManager struct {
	// contains filtered or unexported fields
}

func (*ConfigManager) DeleteConfig

func (cm *ConfigManager) DeleteConfig(ctx context.Context) error

func (*ConfigManager) ReadConfig

func (cm *ConfigManager) ReadConfig(ctx context.Context) (*ConfigEntry, error)

func (*ConfigManager) WithLock

func (cm *ConfigManager) WithLock(fn func(*LockedConfigManager) error) error

func (*ConfigManager) WriteConfig

func (cm *ConfigManager) WriteConfig(ctx context.Context, entry *ConfigEntry) error

type ConfigTuningEntry added in v2.1.1

type ConfigTuningEntry struct {
	ProviderTimeoutSeconds            int     `json:"provider_timeout_seconds"`
	ProviderTimeoutExpiryLeewayFactor float64 `json:"provider_timeout_expiry_leeway_factor"`
	RefreshCheckIntervalSeconds       int     `json:"refresh_check_interval_seconds"`
	RefreshExpiryDeltaFactor          float64 `json:"refresh_expiry_delta_factor"`
	ReapCheckIntervalSeconds          int     `json:"reap_check_interval_seconds"`
	ReapDryRun                        bool    `json:"reap_dry_run"`
	ReapNonRefreshableSeconds         int     `json:"reap_non_refreshable_seconds"`
	ReapRevokedSeconds                int     `json:"reap_revoked_seconds"`
	ReapTransientErrorAttempts        int     `json:"reap_transient_error_attempts"`
	ReapTransientErrorSeconds         int     `json:"reap_transient_error_seconds"`
}

type ConfigVersion added in v2.1.1

type ConfigVersion int
const (
	ConfigVersionInitial ConfigVersion = iota
	ConfigVersion1
	ConfigVersion2
	ConfigVersionLatest = ConfigVersion2
)

func (ConfigVersion) SupportsTuningProviderTimeout added in v2.2.0

func (cv ConfigVersion) SupportsTuningProviderTimeout() bool

func (ConfigVersion) SupportsTuningReaper added in v2.2.0

func (cv ConfigVersion) SupportsTuningReaper() bool

func (ConfigVersion) SupportsTuningRefresh added in v2.1.1

func (cv ConfigVersion) SupportsTuningRefresh() bool

func (ConfigVersion) SupportsTuningRefreshExpiryDelta added in v2.2.0

func (cv ConfigVersion) SupportsTuningRefreshExpiryDelta() bool

type DeviceAuthEntry

type DeviceAuthEntry struct {
	DeviceCode             string            `json:"device_code"`
	Interval               int32             `json:"interval"`
	LastAttemptedIssueTime time.Time         `json:"last_attempted_issue_time"`
	ProviderOptions        map[string]string `json:"provider_options"`
}

func (*DeviceAuthEntry) ShouldPoll

func (dae *DeviceAuthEntry) ShouldPoll() bool

type Holder

type Holder struct {
	// contains filtered or unexported fields
}

func NewHolder

func NewHolder() *Holder

func (*Holder) Managers

func (h *Holder) Managers(storage logical.Storage) *Managers

type LockedAuthCodeManager

type LockedAuthCodeManager struct {
	// contains filtered or unexported fields
}

func (*LockedAuthCodeManager) DeleteAuthCodeEntry

func (lacm *LockedAuthCodeManager) DeleteAuthCodeEntry(ctx context.Context) error

func (*LockedAuthCodeManager) DeleteDeviceAuthEntry

func (lacm *LockedAuthCodeManager) DeleteDeviceAuthEntry(ctx context.Context) error

func (*LockedAuthCodeManager) ReadAuthCodeEntry

func (lacm *LockedAuthCodeManager) ReadAuthCodeEntry(ctx context.Context) (*AuthCodeEntry, error)

func (*LockedAuthCodeManager) ReadDeviceAuthEntry

func (lacm *LockedAuthCodeManager) ReadDeviceAuthEntry(ctx context.Context) (*DeviceAuthEntry, error)

func (*LockedAuthCodeManager) WriteAuthCodeEntry

func (lacm *LockedAuthCodeManager) WriteAuthCodeEntry(ctx context.Context, entry *AuthCodeEntry) error

func (*LockedAuthCodeManager) WriteDeviceAuthEntry

func (lacm *LockedAuthCodeManager) WriteDeviceAuthEntry(ctx context.Context, entry *DeviceAuthEntry) error

type LockedClientCredsManager

type LockedClientCredsManager struct {
	// contains filtered or unexported fields
}

func (*LockedClientCredsManager) DeleteClientCredsEntry

func (lccm *LockedClientCredsManager) DeleteClientCredsEntry(ctx context.Context) error

func (*LockedClientCredsManager) ReadClientCredsEntry

func (lccm *LockedClientCredsManager) ReadClientCredsEntry(ctx context.Context) (*ClientCredsEntry, error)

func (*LockedClientCredsManager) WriteClientCredsEntry

func (lccm *LockedClientCredsManager) WriteClientCredsEntry(ctx context.Context, entry *ClientCredsEntry) error

type LockedConfigManager

type LockedConfigManager struct {
	// contains filtered or unexported fields
}

func (*LockedConfigManager) DeleteConfig

func (lcm *LockedConfigManager) DeleteConfig(ctx context.Context) error

func (*LockedConfigManager) ReadConfig

func (lcm *LockedConfigManager) ReadConfig(ctx context.Context) (*ConfigEntry, error)

func (*LockedConfigManager) WriteConfig

func (lcm *LockedConfigManager) WriteConfig(ctx context.Context, entry *ConfigEntry) error

type Managers

type Managers struct {
	// contains filtered or unexported fields
}

func (*Managers) AuthCode

func (m *Managers) AuthCode() *AuthCodeManager

func (*Managers) ClientCreds

func (m *Managers) ClientCreds() *ClientCredsManager

func (*Managers) Config

func (m *Managers) Config() *ConfigManager

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL