graph

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2023 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Overview

This package provides a object sorting functionality based on the explicit "depends-on" annotation, and implicit object dependencies like namespaces and CRD's.

This package provides a graph data struture and graph functionality using ObjMetadata as vertices in the graph.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HydrateSetList added in v0.29.0

func HydrateSetList(idSetList []object.ObjMetadataSet, objs object.UnstructuredSet) []object.UnstructuredSet

HydrateSetList takes a list of sets of ids and a set of objects and returns a list of set of objects. The output set list will be the same order as the input set list, but with IDs converted into Objects. Any IDs that do not match objects in the provided object set will be skipped (filtered) in the output.

func ReverseSetList added in v0.29.0

func ReverseSetList(setList []object.UnstructuredSet)

ReverseSetList deep reverses of a list of object lists

func ReverseSortObjs

func ReverseSortObjs(objs object.UnstructuredSet) ([]object.UnstructuredSet, error)

ReverseSortObjs is the same as SortObjs but using reverse ordering.

func SortObjs

SortObjs returns a slice of the sets of objects to apply (in order). Each of the objects in an apply set is applied together. The order of the returned applied sets is a topological ordering of the sets to apply. Returns an single empty apply set if there are no objects to apply.

Types

type CyclicDependencyError

type CyclicDependencyError struct {
	Edges []Edge
}

CyclicDependencyError represents a cycle in the graph, making topological sort impossible.

func (CyclicDependencyError) Error

func (cde CyclicDependencyError) Error() string

type DuplicateDependencyError added in v0.28.0

type DuplicateDependencyError struct {
	Edge Edge
}

DuplicateDependencyError represents an invalid depends-on annotation with duplicate references.

func (DuplicateDependencyError) Error added in v0.28.0

func (dde DuplicateDependencyError) Error() string

type Edge

type Edge struct {
	From object.ObjMetadata
	To   object.ObjMetadata
}

Edge encapsulates a pair of vertices describing a directed edge.

type ExternalDependencyError added in v0.28.0

type ExternalDependencyError struct {
	Edge Edge
}

ExternalDependencyError represents an invalid graph edge caused by an object that is not in the object set.

func (ExternalDependencyError) Error added in v0.28.0

func (ede ExternalDependencyError) Error() string

type Graph

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

Graph is contains a directed set of edges, implemented as an adjacency list (map key is "from" vertex, slice are "to" vertices).

func DependencyGraph added in v0.29.0

func DependencyGraph(objs object.UnstructuredSet) (*Graph, error)

DependencyGraph returns a new graph, populated with the supplied objects as vetices and edges built from their dependencies.

func New

func New() *Graph

New returns a pointer to an empty Graph data structure.

func (*Graph) AddEdge

func (g *Graph) AddEdge(from object.ObjMetadata, to object.ObjMetadata)

AddEdge adds a edge from one ObjMetadata vertex to another. The direction of the edge is "from" -> "to".

func (*Graph) AddVertex

func (g *Graph) AddVertex(v object.ObjMetadata)

AddVertex adds an ObjMetadata vertex to the graph, with an initial empty set of edges from added vertex.

func (*Graph) Dependencies added in v0.29.0

func (g *Graph) Dependencies(from object.ObjMetadata) object.ObjMetadataSet

Dependencies returns the objects that this object depends on.

func (*Graph) Dependents added in v0.29.0

func (g *Graph) Dependents(to object.ObjMetadata) object.ObjMetadataSet

Dependents returns the objects that depend on this object.

func (*Graph) Size

func (g *Graph) Size() int

Size returns the number of vertices in the graph.

func (*Graph) Sort

func (g *Graph) Sort() ([]object.ObjMetadataSet, error)

Sort returns the ordered set of vertices after a topological sort.

type SortableEdges added in v0.28.0

type SortableEdges []Edge

SortableEdges sorts a list of edges alphanumerically by From and then To.

func (SortableEdges) Len added in v0.28.0

func (a SortableEdges) Len() int

func (SortableEdges) Less added in v0.28.0

func (a SortableEdges) Less(i, j int) bool

func (SortableEdges) Swap added in v0.28.0

func (a SortableEdges) Swap(i, j int)

Jump to

Keyboard shortcuts

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