premium

package
v2.0.0-...-2631c5f Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2025 License: MPL-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UsageIncreaseMethodUnset = iota
	UsageIncreaseMethodTotal
	UsageIncreaseMethodBreakdown
)
View Source
const (
	BatchLimitHeader            = "x-cq-batch-limit"
	MinimumUpdateIntervalHeader = "x-cq-minimum-update-interval"
	MaximumUpdateIntervalHeader = "x-cq-maximum-update-interval"
)
View Source
const DefaultMaxQuotaFailures = 10 // 5 minutes
View Source
const DefaultQuotaCheckInterval = 30 * time.Second

Variables

View Source
var (
	ErrInvalidLicenseSignature = errors.New("invalid license signature")
	ErrLicenseNotValidYet      = errors.New("license not valid yet")
	ErrLicenseExpired          = errors.New("license expired")
	ErrLicenseNotApplicable    = errors.New("license not applicable to this plugin")
)

Functions

func ContainsPaidTables

func ContainsPaidTables(tables schema.Tables) bool

ContainsPaidTables returns true if any of the tables are paid

func MakeAllTablesPaid

func MakeAllTablesPaid(tables schema.Tables) schema.Tables

MakeAllTablesPaid sets all tables to paid (including relations)

func ValidateLicense

func ValidateLicense(logger zerolog.Logger, meta plugin.Meta, licenseFileOrDirectory string) error

func WithCancelOnQuotaExceeded

func WithCancelOnQuotaExceeded(ctx context.Context, qm QuotaMonitor, ops ...QuotaCheckOption) (context.Context, error)

WithCancelOnQuotaExceeded monitors the quota usage at intervals defined by duration and cancels the context if the quota is exceeded

Types

type BatchUpdater

type BatchUpdater struct {

	// State
	sync.Mutex
	// contains filtered or unexported fields
}

func (*BatchUpdater) Close

func (u *BatchUpdater) Close() error

func (*BatchUpdater) HasQuota

func (u *BatchUpdater) HasQuota(ctx context.Context) (bool, error)

func (*BatchUpdater) Increase

func (u *BatchUpdater) Increase(rows uint32) error

func (*BatchUpdater) IncreaseForTable

func (u *BatchUpdater) IncreaseForTable(table string, rows uint32) error

func (*BatchUpdater) TeamName

func (u *BatchUpdater) TeamName() string

type ErrNoQuota

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

func (ErrNoQuota) Error

func (e ErrNoQuota) Error() string

type License

type License struct {
	LicensedTo string    `json:"licensed_to"`       // Customers name, e.g. "Acme Inc"
	Plugins    []string  `json:"plugins,omitempty"` // List of plugins, each in the format <org>/<kind>/<name>, e.g. "cloudquery/source/aws". Optional, if empty all plugins are allowed.
	IssuedAt   time.Time `json:"issued_at"`
	ValidFrom  time.Time `json:"valid_from"`
	ExpiresAt  time.Time `json:"expires_at"`
}

func UnpackLicense

func UnpackLicense(lic []byte) (*License, error)

func (*License) IsValid

func (l *License) IsValid(logger zerolog.Logger) error

type LicenseWrapper

type LicenseWrapper struct {
	LicenseBytes []byte `json:"license"`
	Signature    string `json:"signature"` // crypto
}

type NoOpUsageClient

type NoOpUsageClient struct {
	TeamNameValue string
}

func (NoOpUsageClient) Close

func (NoOpUsageClient) Close() error

func (NoOpUsageClient) HasQuota

func (NoOpUsageClient) HasQuota(_ context.Context) (bool, error)

func (NoOpUsageClient) Increase

func (NoOpUsageClient) Increase(_ uint32) error

func (NoOpUsageClient) IncreaseForTable

func (NoOpUsageClient) IncreaseForTable(_ string, _ uint32) error

func (*NoOpUsageClient) TeamName

func (n *NoOpUsageClient) TeamName() string

type QuotaCheckOption

type QuotaCheckOption func(*quotaChecker)

func WithQuotaCheckPeriod

func WithQuotaCheckPeriod(duration time.Duration) QuotaCheckOption

WithQuotaCheckPeriod controls the time interval between quota checks

func WithQuotaMaxConsecutiveFailures

func WithQuotaMaxConsecutiveFailures(n int) QuotaCheckOption

WithQuotaMaxConsecutiveFailures controls the number of consecutive failed quota checks before the context is cancelled

type QuotaMonitor

type QuotaMonitor interface {
	// TeamName returns the team name
	TeamName() string
	// HasQuota returns true if the quota has not been exceeded
	HasQuota(context.Context) (bool, error)
}

type TokenClient

type TokenClient interface {
	GetToken() (auth.Token, error)
	GetTokenType() auth.TokenType
}

type UsageClient

type UsageClient interface {
	QuotaMonitor
	// Increase updates the usage by the given number of rows
	Increase(uint32) error
	// IncreaseForTable updates the usage of a table by the given number of rows
	IncreaseForTable(string, uint32) error
	// Close flushes any remaining rows and closes the quota service
	Close() error
}

func NewUsageClient

func NewUsageClient(meta plugin.Meta, ops ...UsageClientOptions) (UsageClient, error)

type UsageClientOptions

type UsageClientOptions func(updater *BatchUpdater)

func WithAPIClient

func WithAPIClient(apiClient *cqapi.ClientWithResponses) UsageClientOptions

WithAPIClient sets the API client to use - defaults to a client using a bearer token generated from the refresh token stored in the configuration

func WithBatchLimit

func WithBatchLimit(batchLimit uint32) UsageClientOptions

WithBatchLimit sets the maximum number of rows to update in a single request

func WithLogger

func WithLogger(logger zerolog.Logger) UsageClientOptions

WithLogger sets the logger to use - defaults to a no-op logger

func WithMaxRetries

func WithMaxRetries(maxRetries int) UsageClientOptions

WithMaxRetries sets the maximum number of retries to update the usage in case of an API error

func WithMaxTimeBetweenFlushes

func WithMaxTimeBetweenFlushes(maxTimeBetweenFlushes time.Duration) UsageClientOptions

WithMaxTimeBetweenFlushes sets the flush duration - the time at which an update will be triggered even if the batch limit is not reached

func WithMaxWaitTime

func WithMaxWaitTime(maxWaitTime time.Duration) UsageClientOptions

WithMaxWaitTime sets the maximum time to wait before retrying a failed update

func WithMinTimeBetweenFlushes

func WithMinTimeBetweenFlushes(minTimeBetweenFlushes time.Duration) UsageClientOptions

WithMinTimeBetweenFlushes sets the minimum time between updates

func WithURL

func WithURL(url string) UsageClientOptions

WithURL sets the API URL to use - defaults to https://api.cloudquery.io

Jump to

Keyboard shortcuts

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