Documentation
¶
Overview ¶
Package hooks provides ecosystem integration hooks for Trove.
Index ¶
- Constants
- type ChronicleHook
- func (h *ChronicleHook) RecordBucketCreated(ctx context.Context, name string)
- func (h *ChronicleHook) RecordBucketDeleted(ctx context.Context, name string)
- func (h *ChronicleHook) RecordCASGC(ctx context.Context, scanned, deleted int, freedBytes int64)
- func (h *ChronicleHook) RecordCASStored(ctx context.Context, hash string, size int64, deduplicated bool)
- func (h *ChronicleHook) RecordObjectCreated(ctx context.Context, bucket, key string, size int64)
- func (h *ChronicleHook) RecordObjectDeleted(ctx context.Context, bucket, key string)
- func (h *ChronicleHook) RecordObjectRead(ctx context.Context, bucket, key string)
- type DispatchHook
- type Metrics
- type VaultHook
- type WardenHook
Constants ¶
const ( EventObjectCreated = "trove.object.created" EventObjectRead = "trove.object.read" EventObjectDeleted = "trove.object.deleted" EventObjectCopied = "trove.object.copied" EventBucketCreated = "trove.bucket.created" EventBucketDeleted = "trove.bucket.deleted" EventUploadStarted = "trove.upload.initiated" EventUploadComplete = "trove.upload.completed" EventUploadAborted = "trove.upload.aborted" EventCASStored = "trove.cas.stored" EventCASGC = "trove.cas.gc" )
Event names for storage operations.
const ( ResourceBucket = "trove:bucket" ResourceObject = "trove:object" ResourceUpload = "trove:upload" ResourceStream = "trove:stream" ResourceCAS = "trove:cas" )
Resource types for Trove operations.
const ( ActionCreate = "create" ActionRead = "read" ActionUpdate = "update" ActionDelete = "delete" ActionList = "list" ActionPresign = "presign" ActionStream = "stream" )
Actions for Trove operations.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChronicleHook ¶
type ChronicleHook struct {
// contains filtered or unexported fields
}
ChronicleHook emits audit events for storage operations via Chronicle.
func NewChronicleHook ¶
func NewChronicleHook(fapp forge.App, logger log.Logger) *ChronicleHook
NewChronicleHook creates a Chronicle hook, auto-discovering the emitter from DI. Returns nil if Chronicle is not available.
func (*ChronicleHook) RecordBucketCreated ¶
func (h *ChronicleHook) RecordBucketCreated(ctx context.Context, name string)
RecordBucketCreated emits a bucket creation event.
func (*ChronicleHook) RecordBucketDeleted ¶
func (h *ChronicleHook) RecordBucketDeleted(ctx context.Context, name string)
RecordBucketDeleted emits a bucket deletion event.
func (*ChronicleHook) RecordCASGC ¶
func (h *ChronicleHook) RecordCASGC(ctx context.Context, scanned, deleted int, freedBytes int64)
RecordCASGC emits a CAS garbage collection event.
func (*ChronicleHook) RecordCASStored ¶
func (h *ChronicleHook) RecordCASStored(ctx context.Context, hash string, size int64, deduplicated bool)
RecordCASStored emits a CAS store event.
func (*ChronicleHook) RecordObjectCreated ¶
func (h *ChronicleHook) RecordObjectCreated(ctx context.Context, bucket, key string, size int64)
RecordObjectCreated emits an object creation event.
func (*ChronicleHook) RecordObjectDeleted ¶
func (h *ChronicleHook) RecordObjectDeleted(ctx context.Context, bucket, key string)
RecordObjectDeleted emits an object deletion event.
func (*ChronicleHook) RecordObjectRead ¶
func (h *ChronicleHook) RecordObjectRead(ctx context.Context, bucket, key string)
RecordObjectRead emits an object read event.
type DispatchHook ¶
type DispatchHook struct {
// contains filtered or unexported fields
}
DispatchHook registers background jobs with Dispatch.
func NewDispatchHook ¶
NewDispatchHook creates a Dispatch hook, auto-discovering the engine from DI. Returns nil if Dispatch is not available.
func (*DispatchHook) RegisterJobs ¶
func (h *DispatchHook) RegisterJobs(ctx context.Context)
RegisterJobs registers all Trove background jobs.
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
Metrics records Trove's metrics on a Forge app's metrics registry. It implements observe.Recorder, so you hand it to trove.WithMetrics (the extension does that for every store it opens) or to cas.WithMetrics.
Every metric in observe.Metrics is declared once, up front, with its label keys. Forge exports each under its namespace prefix:
trove_operation_duration_seconds forge_trove_operation_duration_seconds trove_object_bytes_total forge_trove_object_bytes_total trove_scans_total forge_trove_scans_total trove_cas_stores_total forge_trove_cas_stores_total trove_cas_gc_deleted_total forge_trove_cas_gc_deleted_total trove_cas_gc_freed_bytes_total forge_trove_cas_gc_freed_bytes_total
No metric carries a bucket, a key, a store name or a tenant. Package observe lists every label value.
func NewMetrics ¶
NewMetrics declares Trove's metrics on m. Call it once per app and share the result across stores: a second call declares the same names again. A nil m returns nil, which records nothing.
type VaultHook ¶
type VaultHook struct {
// contains filtered or unexported fields
}
VaultHook auto-configures encryption middleware with Vault-managed keys.
func NewVaultHook ¶
NewVaultHook creates a Vault hook, auto-discovering Vault from DI. Returns nil if Vault is not available.
func (*VaultHook) KeyProvider ¶
func (h *VaultHook) KeyProvider(appID string) encrypt.KeyProvider
KeyProvider returns a KeyProvider backed by Vault secrets.
type WardenHook ¶
type WardenHook struct {
// contains filtered or unexported fields
}
WardenHook provides authorization middleware using Warden.
func NewWardenHook ¶
func NewWardenHook(fapp forge.App, logger log.Logger) *WardenHook
NewWardenHook creates a Warden hook, auto-discovering the engine from DI. Returns nil if Warden is not available.
func (*WardenHook) Middleware ¶
func (h *WardenHook) Middleware() func(http.Handler) http.Handler
Middleware returns an HTTP middleware that checks authorization.