Documentation ¶
Index ¶
- Constants
- func CreateCircuitInformationTable(ctx context.Context, client DynamoClient, tableName string, ...) (*ddb.CreateTableOutput, error)
- func WithDynamoBackend(client DynamoClient, locker DynamoLocker, ...) circuitry.SettingsOption
- type Backend
- type CreateCircuitInformationTableOption
- type CreateCircuitInformationTableOptions
- type DynamoClient
- type DynamoLock
- type DynamoLocker
- type LocalBackendError
- type OperationType
- type RemoteBackendError
Constants ¶
const KeyName = "breaker_name"
KeyName is the name of the DynamoDB Hash Key Attribute
Variables ¶
This section is empty.
Functions ¶
func CreateCircuitInformationTable ¶
func CreateCircuitInformationTable(ctx context.Context, client DynamoClient, tableName string, opts ...CreateCircuitInformationTableOption) (*ddb.CreateTableOutput, error)
CreateCircuitInformationTable is a helper for creating a table to store Circuit Breaker Information (a.k.a., circuitry.CircuitInformation) in DynamoDB
func WithDynamoBackend ¶
func WithDynamoBackend(client DynamoClient, locker DynamoLocker, circuitInformationTableName, lockTableName string, lockOpts ...ddblock.ClientOption) circuitry.SettingsOption
WithDynamoBackend can be used to configure a circuitry.FactorySettings object to use DynamoDB as the backend.
Types ¶
type Backend ¶
type Backend struct { Client DynamoClient LockClient DynamoLocker CircuitTableName, LockTableName string AcquireLockOpts []ddblock.AcquireLockOption ReleaseLockOpts []ddblock.ReleaseLockOption }
Backend provides the StorageBackender interface wrapper for DynamoDB support
type CreateCircuitInformationTableOption ¶
type CreateCircuitInformationTableOption func(*CreateCircuitInformationTableOptions)
CreateCircuitInformationTableOption configures the CreateCircuitInformationTable function behaviour
func CreateTableWithBillingMode ¶
func CreateTableWithBillingMode(mode ddbtypes.BillingMode) CreateCircuitInformationTableOption
CreateTableWithBillingMode will configure the BillingMode for the new DynamoDB table
func CreateTableWithProvisionedThroughput ¶
func CreateTableWithProvisionedThroughput(throughput *ddbtypes.ProvisionedThroughput) CreateCircuitInformationTableOption
CreateTableWithProvisionedThroughput will configure the ProvisionedThroughput for the new DynamoDB table
func CreateTableWithTags ¶
func CreateTableWithTags(tags []ddbtypes.Tag) CreateCircuitInformationTableOption
CreateTableWithTags adds tags to the table creation call
type CreateCircuitInformationTableOptions ¶
type CreateCircuitInformationTableOptions struct { BillingMode ddbtypes.BillingMode ProvisionedThroughput *ddbtypes.ProvisionedThroughput Tags []ddbtypes.Tag }
CreateCircuitInformationTableOptions has the options supported for creating the CircuitInformation table
type DynamoClient ¶
type DynamoClient interface { GetItem(ctx context.Context, params *ddb.GetItemInput, optFns ...func(*ddb.Options)) (*ddb.GetItemOutput, error) PutItem(ctx context.Context, params *ddb.PutItemInput, optFns ...func(*ddb.Options)) (*ddb.PutItemOutput, error) UpdateItem(ctx context.Context, params *ddb.UpdateItemInput, optFns ...func(*ddb.Options)) (*ddb.UpdateItemOutput, error) DeleteItem(ctx context.Context, params *ddb.DeleteItemInput, optFns ...func(*ddb.Options)) (*ddb.DeleteItemOutput, error) CreateTable(ctx context.Context, params *ddb.CreateTableInput, optFns ...func(*ddb.Options)) (*ddb.CreateTableOutput, error) }
DynamoClient defines the necessary attributes for a DynamoDB client for the purpose of testing and mocks
type DynamoLock ¶
type DynamoLock struct {
// contains filtered or unexported fields
}
DynamoLock wraps a DynamoDB Lock from cirello.io/dynamolock/v2 in a sync.Locker interface
func (*DynamoLock) Lock ¶
func (l *DynamoLock) Lock()
Lock does nothing as the lock has alrady been acquired at this point
type DynamoLocker ¶
type DynamoLocker interface { AcquireLockWithContext(ctx context.Context, key string, opts ...ddblock.AcquireLockOption) (*ddblock.Lock, error) CreateTableWithContext(ctx context.Context, tableName string, opts ...ddblock.CreateTableOption) (*ddb.CreateTableOutput, error) ReleaseLockWithContext(ctx context.Context, lockItem *ddblock.Lock, opts ...ddblock.ReleaseLockOption) (bool, error) }
DynamoLocker defines the necessary attributes for a DynamoDB Lock implementation
type LocalBackendError ¶
LocalBackendError wraps errors operating locally before speaking to the DynamoDB server
func (*LocalBackendError) Error ¶
func (e *LocalBackendError) Error() string
func (*LocalBackendError) Unwrap ¶
func (e *LocalBackendError) Unwrap() error
type OperationType ¶
type OperationType int
OperationType is used to quickly identify the kind of operation the backend is performing
const ( // OpGetItem represents the GetItem Operation OpGetItem OperationType = iota // OpUpdateItem represents the UpdateItem Operation OpUpdateItem // OpAcquireLock represents the AcquireLock Operation OpAcquireLock // OpReleaseLock represents the ReleaseLock Operation OpReleaseLock // OpCreateTable represents the CreateTable Operation OpCreateTable )
func (OperationType) String ¶
func (t OperationType) String() string
type RemoteBackendError ¶
type RemoteBackendError struct { Err error TableName string Operation OperationType }
RemoteBackendError wraps errors from aws-sdk-v2 and the DynamoDB Client
func (*RemoteBackendError) Error ¶
func (e *RemoteBackendError) Error() string
func (*RemoteBackendError) Unwrap ¶
func (e *RemoteBackendError) Unwrap() error