client

package
v1.35.0 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2023 License: Apache-2.0 Imports: 14 Imported by: 2

Documentation

Overview

Package client provides a go client for interacting with the BindPlane OP server. Most of the functions depend on the BindPlane REST API internally.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LogRequestError added in v1.16.0

func LogRequestError(logger *zap.Logger, err error, endpoint string)

LogRequestError logs the error for a request against the endpoint

Types

type AgentInstallOptions

type AgentInstallOptions struct {
	// Platform is the platform the agent will run on, e.g. "linux"
	Platform string

	// Version is the agent release version to install. Available release versions of the BindPlane Agent are
	// available at [bindplane-agent Releases]
	//
	// [bindplane-agent Releases]: https://github.com/observIQ/bindplane-agent/releases
	Version string

	// Labels is a string representation of the agents labels, e.g. "platform=dev,os=windows,app=nginx"
	Labels string

	// SecretKey is the secret key used to authenticate agents with BindPlane OP
	SecretKey string

	// RemoteURL is the URL that the agent will use to connect to BindPlane OP
	RemoteURL string
}

AgentInstallOptions contains configuration options used for installing an agent.

type BindPlane

type BindPlane interface {
	// Agents returns a list of Agents.
	Agents(ctx context.Context, options QueryOptions) ([]*model.Agent, error)
	// Agent returns a single Agent.
	Agent(ctx context.Context, id string) (*model.Agent, error)
	// DeleteAgents deletes multiple agents by ID.
	DeleteAgents(ctx context.Context, agentIDs []string) ([]*model.Agent, error)

	// AgentVersions returns a list of AgentVersion resources.
	AgentVersions(ctx context.Context) ([]*model.AgentVersion, error)
	// AgentVersion returns a single AgentVersion resources by name.
	AgentVersion(ctx context.Context, name string) (*model.AgentVersion, error)
	// DeleteAgentVersion deletes an AgentVersion resource by name.
	DeleteAgentVersion(ctx context.Context, name string) error

	// SyncAgentVersions builds agent-version from the release data in GitHub.
	// If version is empty, it syncs the last 10 releases.
	SyncAgentVersions(ctx context.Context, version string) ([]*model.AnyResourceStatus, error)

	// Configurations returns a list of Configuration resources.
	Configurations(ctx context.Context) ([]*model.Configuration, error)
	// Configuration returns a single Configuration resource from GET /v1/configurations/:name
	Configuration(ctx context.Context, name string) (*model.Configuration, error)
	// Delete configuration deletes a single configuration reseource.
	DeleteConfiguration(ctx context.Context, name string) error
	// RawConfiguration returns the raw OpenTelemetry configuration for the configuration with
	// the specified name. This can either be the raw value of a raw configuration or the
	// rendered value of a configuration with sources and destinations.
	RawConfiguration(ctx context.Context, name string) (string, error)
	// CopyConfig creates a deep copy of an existing resource under a new name.
	CopyConfig(ctx context.Context, name, copyName string) error

	// Sources returns a list of all Source resources.
	Sources(ctx context.Context) ([]*model.Source, error)
	// Source returns a single Source resource by name.
	Source(ctx context.Context, name string) (*model.Source, error)
	// DeleteSource deletes a single Source resource by name.
	DeleteSource(ctx context.Context, name string) error

	// SourceTypes returns a list of all SourceType resources.
	SourceTypes(ctx context.Context) ([]*model.SourceType, error)
	// SourceType returns a single SourceType resource by name.
	SourceType(ctx context.Context, name string) (*model.SourceType, error)
	// DeleteSourceType deletes a single SourceType resource by name.
	DeleteSourceType(ctx context.Context, name string) error

	// Processors returns a list of all Processor resources.
	Processors(ctx context.Context) ([]*model.Processor, error)
	// Processor returns a single Processor resource by name.
	Processor(ctx context.Context, name string) (*model.Processor, error)
	// DeleteProcessor deletes a single Processor resource by name.
	DeleteProcessor(ctx context.Context, name string) error

	// ProcessorTypes returns a list of all ProcessorType resources.
	ProcessorTypes(ctx context.Context) ([]*model.ProcessorType, error)
	// ProcessorType returns a single ProcessorType resource by name.
	ProcessorType(ctx context.Context, name string) (*model.ProcessorType, error)
	// DeleteProcessorType deletes a single ProcessorType resource by name.
	DeleteProcessorType(ctx context.Context, name string) error

	// Destinations returns a list of all Destination resources.
	Destinations(ctx context.Context) ([]*model.Destination, error)
	// Destination returns a single Destination resource by name.
	Destination(ctx context.Context, name string) (*model.Destination, error)
	// DeleteDestination deletes a single Destination resource by name.
	DeleteDestination(ctx context.Context, name string) error

	// DestinationTypes returns a list of all DestinationType resources.
	DestinationTypes(ctx context.Context) ([]*model.DestinationType, error)
	// DestinationType returns a single DestinationType by name.
	DestinationType(ctx context.Context, name string) (*model.DestinationType, error)
	// DeleteDestinationType deletes a single Destination resource by name.
	DeleteDestinationType(ctx context.Context, name string) error

	// Apply upserts multiple resources of any kind.
	Apply(ctx context.Context, r []*model.AnyResource) ([]*model.AnyResourceStatus, error)
	// Delete deletes multiple resources, minimum required fields to delete are Kind and Metadata.Name.
	Delete(ctx context.Context, r []*model.AnyResource) ([]*model.AnyResourceStatus, error)

	// Version returns the version of the BindPlane-OP server.
	Version(ctx context.Context) (version.Version, error)

	// AgentInstallCommand returns the installation command for the given AgentInstallationOptions.
	AgentInstallCommand(ctx context.Context, options AgentInstallOptions) (string, error)
	// AgentUpgrade upgrades the agent with given ID to the specified version.
	AgentUpgrade(ctx context.Context, id string, version string) error

	// AgentLabels gets the labels for an agent
	AgentLabels(ctx context.Context, id string) (*model.Labels, error)
	// ApplyAgentLabels applies the specified labels to an agent, merging the specified labels with the existing labels
	// and returning the labels of the agent
	ApplyAgentLabels(ctx context.Context, id string, labels *model.Labels, override bool) (*model.Labels, error)

	// RolloutStatus returns the status of a rollout
	RolloutStatus(ctx context.Context, name string) (*model.Configuration, error)

	// StartRollout starts a rollout that is pending
	StartRollout(ctx context.Context, name string, options *model.RolloutOptions) (*model.Configuration, error)

	// PauseRollout pauses a rollout that is started
	PauseRollout(ctx context.Context, name string) (*model.Configuration, error)

	// ResumeRollout resumes a rollout that is paused
	ResumeRollout(ctx context.Context, name string) (*model.Configuration, error)

	// UpdateRollout updates a rollout
	UpdateRollout(ctx context.Context, name string) (*model.Configuration, error)

	// UpdateRollouts updates all active rollouts
	UpdateRollouts(ctx context.Context) ([]*model.Configuration, error)

	// ResourceHistory retrieves the history of the rollout
	ResourceHistory(ctx context.Context, kind model.Kind, name string) ([]*model.AnyResource, error)
}

BindPlane is a REST client for BindPlane OP.

func NewBindPlane

func NewBindPlane(config *config.Config, logger *zap.Logger) (BindPlane, error)

NewBindPlane takes a client configuration, logger and returns a new BindPlane.

type BindplaneClient added in v1.16.0

type BindplaneClient struct {
	Client *resty.Client
	*zap.Logger
}

BindplaneClient is the implementation of the Bindplane interface

func (*BindplaneClient) Agent added in v1.16.0

func (c *BindplaneClient) Agent(_ context.Context, id string) (*model.Agent, error)

Agent returns the agent with the id

func (*BindplaneClient) AgentInstallCommand added in v1.16.0

func (c *BindplaneClient) AgentInstallCommand(_ context.Context, options AgentInstallOptions) (string, error)

AgentInstallCommand returns the agent install command based on the install options

func (*BindplaneClient) AgentLabels added in v1.16.0

func (c *BindplaneClient) AgentLabels(_ context.Context, id string) (*model.Labels, error)

AgentLabels retrieves labels for agent with id

func (*BindplaneClient) AgentUpgrade added in v1.16.0

func (c *BindplaneClient) AgentUpgrade(_ context.Context, id string, version string) error

AgentUpgrade sends a request to upgrade agent with id to version

func (*BindplaneClient) AgentVersion added in v1.16.0

func (c *BindplaneClient) AgentVersion(ctx context.Context, name string) (*model.AgentVersion, error)

AgentVersion retrieves the agent version with name

func (*BindplaneClient) AgentVersions added in v1.16.0

func (c *BindplaneClient) AgentVersions(ctx context.Context) ([]*model.AgentVersion, error)

AgentVersions retries all gent versions

func (*BindplaneClient) Agents added in v1.16.0

func (c *BindplaneClient) Agents(_ context.Context, options QueryOptions) ([]*model.Agent, error)

Agents retries agents based on the query

func (*BindplaneClient) Apply added in v1.16.0

func (c *BindplaneClient) Apply(_ context.Context, resources []*model.AnyResource) ([]*model.AnyResourceStatus, error)

Apply apply resources

func (*BindplaneClient) ApplyAgentLabels added in v1.16.0

func (c *BindplaneClient) ApplyAgentLabels(_ context.Context, id string, labels *model.Labels, overwrite bool) (*model.Labels, error)

ApplyAgentLabels apply labels to agent with id

func (*BindplaneClient) Configuration added in v1.16.0

func (c *BindplaneClient) Configuration(ctx context.Context, name string) (*model.Configuration, error)

Configuration retrieves configuration with name

func (*BindplaneClient) Configurations added in v1.16.0

func (c *BindplaneClient) Configurations(_ context.Context) ([]*model.Configuration, error)

Configurations retrieves all configurations

func (*BindplaneClient) CopyConfig added in v1.16.0

func (c *BindplaneClient) CopyConfig(_ context.Context, name, copyName string) error

CopyConfig copies config with name and gives the new config copyName

func (*BindplaneClient) Delete added in v1.16.0

func (c *BindplaneClient) Delete(_ context.Context, resources []*model.AnyResource) ([]*model.AnyResourceStatus, error)

Delete deletes passed in resources

func (*BindplaneClient) DeleteAgentVersion added in v1.16.0

func (c *BindplaneClient) DeleteAgentVersion(ctx context.Context, name string) error

DeleteAgentVersion deletes the agent version with name

func (*BindplaneClient) DeleteAgents added in v1.16.0

func (c *BindplaneClient) DeleteAgents(_ context.Context, ids []string) ([]*model.Agent, error)

DeleteAgents deletes agents with the ids

func (*BindplaneClient) DeleteConfiguration added in v1.16.0

func (c *BindplaneClient) DeleteConfiguration(ctx context.Context, name string) error

DeleteConfiguration deletes the configuration with name

func (*BindplaneClient) DeleteDestination added in v1.16.0

func (c *BindplaneClient) DeleteDestination(ctx context.Context, name string) error

DeleteDestination deletes destination with given name

func (*BindplaneClient) DeleteDestinationType added in v1.16.0

func (c *BindplaneClient) DeleteDestinationType(ctx context.Context, name string) error

DeleteDestinationType deletes destination type with given name

func (*BindplaneClient) DeleteProcessor added in v1.16.0

func (c *BindplaneClient) DeleteProcessor(ctx context.Context, name string) error

DeleteProcessor deletes the processor with the given name

func (*BindplaneClient) DeleteProcessorType added in v1.16.0

func (c *BindplaneClient) DeleteProcessorType(ctx context.Context, name string) error

DeleteProcessorType deletes processor type with given name

func (*BindplaneClient) DeleteResource added in v1.16.0

func (c *BindplaneClient) DeleteResource(_ context.Context, resourcesURL string, name string) error

DeleteResource deletes the resource at the URL of name

func (*BindplaneClient) DeleteSource added in v1.16.0

func (c *BindplaneClient) DeleteSource(ctx context.Context, name string) error

DeleteSource deletes the source with the given name

func (*BindplaneClient) DeleteSourceType added in v1.16.0

func (c *BindplaneClient) DeleteSourceType(ctx context.Context, name string) error

DeleteSourceType deletes source type with given name

func (*BindplaneClient) Destination added in v1.16.0

func (c *BindplaneClient) Destination(ctx context.Context, name string) (*model.Destination, error)

Destination retrieves destination with given name

func (*BindplaneClient) DestinationType added in v1.16.0

func (c *BindplaneClient) DestinationType(ctx context.Context, name string) (*model.DestinationType, error)

DestinationType retrieves destination type with given name

func (*BindplaneClient) DestinationTypes added in v1.16.0

func (c *BindplaneClient) DestinationTypes(ctx context.Context) ([]*model.DestinationType, error)

DestinationTypes retrieves all destination types

func (*BindplaneClient) Destinations added in v1.16.0

func (c *BindplaneClient) Destinations(ctx context.Context) ([]*model.Destination, error)

Destinations retrieves all destinations

func (*BindplaneClient) PauseRollout added in v1.16.0

func (c *BindplaneClient) PauseRollout(ctx context.Context, name string) (*model.Configuration, error)

PauseRollout pauses a rollout that is started

func (*BindplaneClient) Processor added in v1.16.0

func (c *BindplaneClient) Processor(ctx context.Context, name string) (*model.Processor, error)

Processor retrieves processor with given name

func (*BindplaneClient) ProcessorType added in v1.16.0

func (c *BindplaneClient) ProcessorType(ctx context.Context, name string) (*model.ProcessorType, error)

ProcessorType retrieves processor type with given name

func (*BindplaneClient) ProcessorTypes added in v1.16.0

func (c *BindplaneClient) ProcessorTypes(ctx context.Context) ([]*model.ProcessorType, error)

ProcessorTypes retrieves all processor types

func (*BindplaneClient) Processors added in v1.16.0

func (c *BindplaneClient) Processors(ctx context.Context) ([]*model.Processor, error)

Processors retrieves all processors

func (*BindplaneClient) RawConfiguration added in v1.16.0

func (c *BindplaneClient) RawConfiguration(ctx context.Context, name string) (string, error)

RawConfiguration retrieves the raw config with name

func (*BindplaneClient) Resource added in v1.16.0

func (c *BindplaneClient) Resource(ctx context.Context, resourcesURL string, name string, result any) error

Resource gets the Resource with the specified name from the REST server and stores it in the provided result.

func (*BindplaneClient) ResourceHistory added in v1.16.0

func (c *BindplaneClient) ResourceHistory(ctx context.Context, kind model.Kind, name string) ([]*model.AnyResource, error)

ResourceHistory retrieves the history of the rollout

func (*BindplaneClient) Resources added in v1.16.0

func (c *BindplaneClient) Resources(ctx context.Context, resourcesURL string, result any) error

Resources gets the Resources from the REST server and stores them in the provided result.

func (*BindplaneClient) ResumeRollout added in v1.16.0

func (c *BindplaneClient) ResumeRollout(ctx context.Context, name string) (*model.Configuration, error)

ResumeRollout resumes a rollout that is paused

func (*BindplaneClient) RolloutStatus added in v1.16.0

func (c *BindplaneClient) RolloutStatus(ctx context.Context, name string) (*model.Configuration, error)

RolloutStatus returns the status of a rollout

func (*BindplaneClient) Source added in v1.16.0

func (c *BindplaneClient) Source(ctx context.Context, name string) (*model.Source, error)

Source retrieves the source with the given name

func (*BindplaneClient) SourceType added in v1.16.0

func (c *BindplaneClient) SourceType(ctx context.Context, name string) (*model.SourceType, error)

SourceType retrieves source type with given name

func (*BindplaneClient) SourceTypes added in v1.16.0

func (c *BindplaneClient) SourceTypes(ctx context.Context) ([]*model.SourceType, error)

SourceTypes retrieves all source types

func (*BindplaneClient) Sources added in v1.16.0

func (c *BindplaneClient) Sources(ctx context.Context) ([]*model.Source, error)

Sources retrieves all sources

func (*BindplaneClient) StartRollout added in v1.16.0

func (c *BindplaneClient) StartRollout(ctx context.Context, name string, options *model.RolloutOptions) (*model.Configuration, error)

StartRollout starts a rollout that is pending

func (*BindplaneClient) StatusError added in v1.16.0

func (c *BindplaneClient) StatusError(resp *resty.Response, err error, message string) error

StatusError returns and error if resp is not 2XX or err is not nil

func (*BindplaneClient) SyncAgentVersions added in v1.16.0

func (c *BindplaneClient) SyncAgentVersions(_ context.Context, version string) ([]*model.AnyResourceStatus, error)

SyncAgentVersions syncs the specific agent version

func (*BindplaneClient) UnauthorizedError added in v1.16.0

func (c *BindplaneClient) UnauthorizedError(resp *resty.Response) error

UnauthorizedError checks if response is Unauthorized error and returns error if it is

func (*BindplaneClient) UpdateRollout added in v1.16.0

func (c *BindplaneClient) UpdateRollout(ctx context.Context, name string) (*model.Configuration, error)

UpdateRollout updates a rollout

func (*BindplaneClient) UpdateRollouts added in v1.16.0

func (c *BindplaneClient) UpdateRollouts(ctx context.Context) ([]*model.Configuration, error)

UpdateRollouts updates all active rollouts

func (*BindplaneClient) Version added in v1.16.0

Version retrieves bindplane server version

type QueryOptions added in v1.16.0

type QueryOptions struct {
	Selector string
	Query    string
	Offset   int
	Limit    int
	Sort     string
}

QueryOptions represents the set of options available for a store query

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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