discovery

package
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2021 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Definitions for Output Snapshots

Index

Constants

This section is empty.

Variables

View Source
var MissingRequiredLabelError = func(labelKey string, gvk schema.GroupVersionKind, obj ezkube.ResourceId) error {
	return eris.Errorf("expected label %v not on labels of %v %v", labelKey, gvk.String(), sets.Key(obj))
}

this error can occur if constructing a Partitioned Snapshot from a resource that is missing the partition label

View Source
var SnapshotGVKs = []schema.GroupVersionKind{

	schema.GroupVersionKind{
		Group:   "discovery.mesh.gloo.solo.io",
		Version: "v1",
		Kind:    "Destination",
	},
	schema.GroupVersionKind{
		Group:   "discovery.mesh.gloo.solo.io",
		Version: "v1",
		Kind:    "Workload",
	},
	schema.GroupVersionKind{
		Group:   "discovery.mesh.gloo.solo.io",
		Version: "v1",
		Kind:    "Mesh",
	},
}

SnapshotGVKs is a list of the GVKs included in this snapshot

Functions

func NewBuilder

func NewBuilder(ctx context.Context, name string) *builder

Types

type Builder

type Builder interface {

	// add Destinations to the collected outputs
	AddDestinations(destinations ...*discovery_mesh_gloo_solo_io_v1.Destination)

	// get the collected Destinations
	GetDestinations() discovery_mesh_gloo_solo_io_v1_sets.DestinationSet

	// add Workloads to the collected outputs
	AddWorkloads(workloads ...*discovery_mesh_gloo_solo_io_v1.Workload)

	// get the collected Workloads
	GetWorkloads() discovery_mesh_gloo_solo_io_v1_sets.WorkloadSet

	// add Meshes to the collected outputs
	AddMeshes(meshes ...*discovery_mesh_gloo_solo_io_v1.Mesh)

	// get the collected Meshes
	GetMeshes() discovery_mesh_gloo_solo_io_v1_sets.MeshSet

	// build the collected outputs into a label-partitioned snapshot
	BuildLabelPartitionedSnapshot(labelKey string, gvk schema.GroupVersionKind) (Snapshot, error)

	// build the collected outputs into a snapshot with a single partition
	BuildSinglePartitionedSnapshot(snapshotLabels map[string]string) (Snapshot, error)

	// add a cluster to the collected clusters.
	// this can be used to collect clusters for use with MultiCluster snapshots.
	AddCluster(cluster string)

	// returns the set of clusters currently stored in this builder
	Clusters() []string

	// merge all the resources from another Builder into this one
	Merge(other Builder)

	// create a clone of this builder (deepcopying all resources)
	Clone() Builder

	// convert this snapshot to its generic form
	Generic() resource.ClusterSnapshot

	// iterate over the objects contained in the snapshot
	ForEachObject(handleObject func(cluster string, gvk schema.GroupVersionKind, obj resource.TypedObject))
}

the output Builder uses a builder pattern to allow iteratively collecting outputs before producing a final snapshot

type LabeledDestinationSet added in v1.0.0

type LabeledDestinationSet interface {
	// returns the set of Labels shared by this DestinationSet
	Labels() map[string]string

	// returns the set of Destinationes with the given labels
	Set() discovery_mesh_gloo_solo_io_v1_sets.DestinationSet

	// converts the set to a generic format which can be applied by the Snapshot.Apply functions
	Generic() output.ResourceList
}

LabeledDestinationSet represents a set of destinations which share a common set of labels. These labels are used to find diffs between DestinationSets.

func NewLabeledDestinationSet added in v1.0.0

type LabeledMeshSet

type LabeledMeshSet interface {
	// returns the set of Labels shared by this MeshSet
	Labels() map[string]string

	// returns the set of Meshes with the given labels
	Set() discovery_mesh_gloo_solo_io_v1_sets.MeshSet

	// converts the set to a generic format which can be applied by the Snapshot.Apply functions
	Generic() output.ResourceList
}

LabeledMeshSet represents a set of meshes which share a common set of labels. These labels are used to find diffs between MeshSets.

type LabeledWorkloadSet

type LabeledWorkloadSet interface {
	// returns the set of Labels shared by this WorkloadSet
	Labels() map[string]string

	// returns the set of Workloades with the given labels
	Set() discovery_mesh_gloo_solo_io_v1_sets.WorkloadSet

	// converts the set to a generic format which can be applied by the Snapshot.Apply functions
	Generic() output.ResourceList
}

LabeledWorkloadSet represents a set of workloads which share a common set of labels. These labels are used to find diffs between WorkloadSets.

type Snapshot

type Snapshot interface {

	// return the set of Destinations with a given set of labels
	Destinations() []LabeledDestinationSet
	// return the set of Workloads with a given set of labels
	Workloads() []LabeledWorkloadSet
	// return the set of Meshes with a given set of labels
	Meshes() []LabeledMeshSet

	// apply the snapshot to the local cluster, garbage collecting stale resources
	ApplyLocalCluster(ctx context.Context, clusterClient client.Client, opts output.OutputOpts)

	// apply resources from the snapshot across multiple clusters, garbage collecting stale resources
	ApplyMultiCluster(ctx context.Context, multiClusterClient multicluster.Client, opts output.OutputOpts)

	// serialize the entire snapshot as JSON
	MarshalJSON() ([]byte, error)

	// convert this snapshot to its generic form
	Generic() resource.ClusterSnapshot

	// iterate over the objects contained in the snapshot
	ForEachObject(handleObject func(cluster string, gvk schema.GroupVersionKind, obj resource.TypedObject))
}

the snapshot of output resources produced by a translation

func NewLabelPartitionedSnapshot

automatically partitions the input resources by the presence of the provided label.

func NewSinglePartitionedSnapshot

func NewSinglePartitionedSnapshot(
	name string,
	snapshotLabels map[string]string,

	destinations discovery_mesh_gloo_solo_io_v1_sets.DestinationSet,
	workloads discovery_mesh_gloo_solo_io_v1_sets.WorkloadSet,
	meshes discovery_mesh_gloo_solo_io_v1_sets.MeshSet,
	clusters ...string,
) (Snapshot, error)

simplified constructor for a snapshot with a single label partition (i.e. all resources share a single set of labels).

func NewSnapshot

func NewSnapshot(
	name string,

	destinations []LabeledDestinationSet,
	workloads []LabeledWorkloadSet,
	meshes []LabeledMeshSet,
	clusters ...string,
) Snapshot

Directories

Path Synopsis
Package mock_discovery is a generated GoMock package.
Package mock_discovery is a generated GoMock package.

Jump to

Keyboard shortcuts

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