71 lines
2.4 KiB
Go
71 lines
2.4 KiB
Go
package secret
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/influxdata/influxdb/v2"
|
|
"github.com/influxdata/influxdb/v2/kit/metric"
|
|
"github.com/influxdata/influxdb/v2/kit/platform"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
// SecreteService is a metrics middleware system for the secret service
|
|
type SecreteService struct {
|
|
// RED metrics
|
|
rec *metric.REDClient
|
|
|
|
secretSvc influxdb.SecretService
|
|
}
|
|
|
|
var _ influxdb.SecretService = (*SecreteService)(nil)
|
|
|
|
// NewMetricService creates a new secret metrics middleware
|
|
func NewMetricService(reg prometheus.Registerer, s influxdb.SecretService) *SecreteService {
|
|
return &SecreteService{
|
|
rec: metric.New(reg, "secret"),
|
|
secretSvc: s,
|
|
}
|
|
}
|
|
|
|
// LoadSecret retrieves the secret value v found at key k for organization orgID.
|
|
func (ms *SecreteService) LoadSecret(ctx context.Context, orgID platform.ID, key string) (string, error) {
|
|
rec := ms.rec.Record("load_secret")
|
|
secret, err := ms.secretSvc.LoadSecret(ctx, orgID, key)
|
|
return secret, rec(err)
|
|
}
|
|
|
|
// GetSecretKeys retrieves all secret keys that are stored for the organization orgID.
|
|
func (ms *SecreteService) GetSecretKeys(ctx context.Context, orgID platform.ID) ([]string, error) {
|
|
rec := ms.rec.Record("get_secret_keys")
|
|
secrets, err := ms.secretSvc.GetSecretKeys(ctx, orgID)
|
|
return secrets, rec(err)
|
|
}
|
|
|
|
// PutSecret stores the secret pair (k,v) for the organization orgID.
|
|
func (ms *SecreteService) PutSecret(ctx context.Context, orgID platform.ID, key string, val string) error {
|
|
rec := ms.rec.Record("put_secret")
|
|
err := ms.secretSvc.PutSecret(ctx, orgID, key, val)
|
|
return rec(err)
|
|
}
|
|
|
|
// PutSecrets puts all provided secrets and overwrites any previous values.
|
|
func (ms *SecreteService) PutSecrets(ctx context.Context, orgID platform.ID, m map[string]string) error {
|
|
rec := ms.rec.Record("put_secrets")
|
|
err := ms.secretSvc.PutSecrets(ctx, orgID, m)
|
|
return rec(err)
|
|
}
|
|
|
|
// PatchSecrets patches all provided secrets and updates any previous values.
|
|
func (ms *SecreteService) PatchSecrets(ctx context.Context, orgID platform.ID, m map[string]string) error {
|
|
rec := ms.rec.Record("patch_secrets")
|
|
err := ms.secretSvc.PatchSecrets(ctx, orgID, m)
|
|
return rec(err)
|
|
}
|
|
|
|
// DeleteSecret removes a single secret from the secret store.
|
|
func (ms *SecreteService) DeleteSecret(ctx context.Context, orgID platform.ID, keys ...string) error {
|
|
rec := ms.rec.Record("delete_secret")
|
|
err := ms.secretSvc.DeleteSecret(ctx, orgID, keys...)
|
|
return rec(err)
|
|
}
|