service

package
v0.61.0 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2025 License: Apache-2.0 Imports: 35 Imported by: 1

Documentation

Overview

Package service represents the agent's core remoteconfig service

The `Service` type provides a communication layer for downstream clients to request configuration, as well as the ability to track clients for requesting complete update payloads from the remote config backend.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithAPIKey added in v0.53.0

func WithAPIKey(apiKey string) func(s *options)

WithAPIKey sets the service API key

func WithAgentPollLoopDisabled added in v0.61.0

func WithAgentPollLoopDisabled() func(s *options)

WithAgentPollLoopDisabled disables the config poll loop

func WithClientCacheBypassLimit added in v0.53.0

func WithClientCacheBypassLimit(limit int, cfgPath string) func(s *options)

WithClientCacheBypassLimit validates and sets the service client cache bypass limit

func WithClientTTL added in v0.53.0

func WithClientTTL(interval time.Duration, cfgPath string) func(s *options)

WithClientTTL validates and sets the service client TTL

func WithConfigRootOverride added in v0.53.0

func WithConfigRootOverride(site string, override string) func(s *options)

WithConfigRootOverride sets the service config root override

func WithDatabaseFileName added in v0.52.0

func WithDatabaseFileName(fileName string) func(s *options)

WithDatabaseFileName sets the service database file name

func WithDatabasePath added in v0.61.0

func WithDatabasePath(path string) func(s *options)

WithDatabasePath sets the service database path

func WithDirectorRootOverride added in v0.53.0

func WithDirectorRootOverride(site string, override string) func(s *options)

WithDirectorRootOverride sets the service director root override

func WithMaxBackoffInterval added in v0.53.0

func WithMaxBackoffInterval(interval time.Duration, cfgPath string) func(s *options)

WithMaxBackoffInterval validates sets the service maximum retry backoff time

func WithRcKey added in v0.53.0

func WithRcKey(rcKey string) func(s *options)

WithRcKey sets the service remote configuration key

func WithRefreshInterval added in v0.53.0

func WithRefreshInterval(interval time.Duration, cfgPath string) func(s *options)

WithRefreshInterval validates and sets the service refresh interval

func WithTraceAgentEnv

func WithTraceAgentEnv(env string) func(s *options)

WithTraceAgentEnv sets the service trace-agent environment variable

Types

type AgentMetadata

type AgentMetadata struct {
	Version      string    `json:"version"`
	APIKeyHash   string    `json:"api-key-hash"`
	CreationTime time.Time `json:"creation-time"`
}

AgentMetadata is data stored in bolt DB to determine whether or not the agent has changed and the RC cache should be cleared

type ConfigFileMetaCustom

type ConfigFileMetaCustom struct {
	Predicates *pbgo.TracerPredicates `json:"tracer-predicates,omitempty"`
	Expires    int64                  `json:"expires"`
}

ConfigFileMetaCustom is the custom metadata of a config

type CoreAgentService added in v0.59.0

type CoreAgentService struct {
	Service
	// contains filtered or unexported fields
}

CoreAgentService fetches Remote Configurations from the RC backend

func NewService

func NewService(cfg model.Reader, rcType, baseRawURL, hostname string, tagsGetter func() []string, telemetryReporter RcTelemetryReporter, agentVersion string, opts ...Option) (*CoreAgentService, error)

NewService instantiates a new remote configuration management service

func (*CoreAgentService) ClientGetConfigs added in v0.59.0

ClientGetConfigs is the polling API called by tracers and agents to get the latest configurations

func (*CoreAgentService) ConfigGetState added in v0.59.0

func (s *CoreAgentService) ConfigGetState() (*pbgo.GetStateConfigResponse, error)

ConfigGetState returns the state of the configuration and the director repos in the local store

func (*CoreAgentService) Start added in v0.59.0

func (s *CoreAgentService) Start()

Start the remote configuration management service

func (*CoreAgentService) Stop added in v0.59.0

func (s *CoreAgentService) Stop() error

Stop stops the refresh loop and closes the on-disk DB cache

type HTTPClient added in v0.59.0

type HTTPClient struct {
	Service
	// contains filtered or unexported fields
}

HTTPClient fetches Remote Configurations from an HTTP(s)-based backend

func NewHTTPClient added in v0.59.0

func NewHTTPClient(runPath, site, apiKey, agentVersion string) (*HTTPClient, error)

NewHTTPClient creates a new HTTPClient that can be used to fetch Remote Configurations from an HTTP(s)-based backend It uses a local db to cache the fetched configurations. Only one HTTPClient should be created per agent. An HTTPClient must be closed via HTTPClient.Close() before creating a new one.

func (*HTTPClient) Close added in v0.59.0

func (c *HTTPClient) Close() error

Close closes the HTTPClient and cleans up any resources. Close must be called before any other HTTPClients are instantiated via NewHTTPClient

func (*HTTPClient) GetCDNConfigUpdate added in v0.59.0

func (c *HTTPClient) GetCDNConfigUpdate(
	ctx context.Context,
	products []string,
	currentTargetsVersion, currentRootVersion uint64,
	cachedTargetFiles []*pbgo.TargetFileMeta,
) (*state.Update, error)

GetCDNConfigUpdate returns any updated configs. If multiple requests have been made in a short amount of time, a cached response is returned. If RC has been disabled, an error is returned. If there is no update (the targets version is up-to-date) nil is returned for both the update and error.

type Option added in v0.52.0

type Option func(s *options)

Option is a service option

type RcTelemetryReporter

type RcTelemetryReporter interface {
	// IncRateLimit is invoked when a cache bypass request is prevented due to rate limiting
	IncRateLimit()
	// IncTimeout is invoked when a cache bypass request is cancelled due to timeout or a previous cache bypass request is still pending
	IncTimeout()
}

RcTelemetryReporter should be implemented by the agent to publish metrics on exceptional cache bypass request events

type Service

type Service struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Service defines the remote config management service responsible for fetching, storing and dispatching the configurations

Jump to

Keyboard shortcuts

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