Documentation

Overview

Package logdog implements output to a Logdog server via PubSub.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Scopes

func Scopes() []string

Scopes returns the set of OAuth scopes required for this Output.

Types

type Auth

type Auth interface {
	// Project is the current project taken from LUCI_CONTEXT (or "").
	Project() string
	// Realm is the current realm taken from LUCI_CONTEXT (or "").
	Realm() string
	// RPC returns an authenticator to use for RegisterPrefix RPC call.
	RPC() *auth.Authenticator
	// PubSub returns an authenticator to use for PubSub calls.
	PubSub() *auth.Authenticator
}

Auth incapsulates an authentication scheme to use.

Construct it using either LegacyAuth() or RealmsAwareAuth().

func LegacyAuth

func LegacyAuth(a *auth.Authenticator) Auth

LegacyAuth returns an authentication scheme with pre-realms logic.

Will be eventually removed once all call sites are aware of realms.

func RealmsAwareAuth

func RealmsAwareAuth(ctx context.Context) (Auth, error)

RealmsAwareAuth returns an authentication scheme with realms-aware logic.

The given context will be used to:

1. Grab the current realm name from LUCI_CONTEXT.
2. Construct a transport that uses the default account for auth (thus the
   context should have the default task account selected in it).
3. Switch into "system" local account and construct a transport that uses
   this account for PubSub calls.

If there's no realm in the context, degrades to LegacyAuth using the "system" local account for all calls, as was the way before the realms mode.

type Config

type Config struct {
	// Auth incapsulates an authentication scheme to use.
	//
	// Construct it using either LegacyAuth() or RealmsAwareAuth().
	Auth Auth

	// Host is the name of the LogDog Host to connect to.
	Host string

	// Project is the project that this stream belongs to.
	Project string
	// Prefix is the stream prefix to register.
	Prefix types.StreamName
	// PrefixExpiration is the prefix expiration to use when registering.
	// If zero, no expiration will be expressed to the Coordinator, and it will
	// choose based on its configuration.
	PrefixExpiration time.Duration

	// SourceInfo, if not empty, is auxiliary source information to register
	// alongside the stream.
	SourceInfo []string

	// PublishContext is the special Context to use for publishing messages. If
	// nil, the Context supplied to Register will be used.
	//
	// This is useful when the Context supplied to Register responds to
	// cancellation (e.g., user sends SIGTERM), but we might not want to
	// immediately cancel pending publishes due to flushing.
	PublishContext context.Context

	// RPCTimeout, if > 0, is the timeout to apply to an individual RPC.
	RPCTimeout time.Duration
}

Config is the set of configuration parameters for this Output instance.

func (*Config) Register

func (cfg *Config) Register(c context.Context) (output.Output, error)

Register registers the supplied Prefix with the Coordinator. Upon success, an Output instance bound to that stream will be returned.