Documentation ¶
Index ¶
- Constants
- func GVRNamespaced(gvr schema.GroupVersionResource, discoveryClient discovery.DiscoveryClient) bool
- func GetByJSONPath(ctx context.Context, relatedResList *unstructured.UnstructuredList, ...) (graph.Graph[string, ResourceGraphNode], error)
- func GetByLabelSelector(ctx context.Context, relatedResList *unstructured.UnstructuredList, ...) (graph.Graph[string, ResourceGraphNode], error)
- func GetChildResourcesList(ctx context.Context, client *dynamic.DynamicClient, ...) (*unstructured.UnstructuredList, error)
- func GetChildren(ctx context.Context, client *dynamic.DynamicClient, ...) (graph.Graph[string, ResourceGraphNode], error)
- func GetChildrenByOwnerReference(ctx context.Context, childResList *unstructured.UnstructuredList, ...) (graph.Graph[string, ResourceGraphNode], error)
- func GetParentResourcesList(ctx context.Context, client *dynamic.DynamicClient, ...) (*unstructured.UnstructuredList, error)
- func GetParents(ctx context.Context, client *dynamic.DynamicClient, ...) (graph.Graph[string, ResourceGraphNode], error)
- func GetParentsByOwnerReference(ctx context.Context, client *dynamic.DynamicClient, ...) (graph.Graph[string, ResourceGraphNode], error)
- func RelationshipEquals(r, relation *Relationship) bool
- type Relationship
- type RelationshipGraph
- func BuildBuiltinRelationshipGraph(ctx context.Context, client *dynamic.DynamicClient) (graph.Graph[string, RelationshipGraphNode], *RelationshipGraph, error)
- func BuildRelationshipGraph(ctx context.Context, client *dynamic.DynamicClient) (graph.Graph[string, RelationshipGraphNode], *RelationshipGraph, error)
- func (rg *RelationshipGraph) CountRelationshipGraph(ctx context.Context, dynamicClient *dynamic.DynamicClient, ...) (*RelationshipGraph, error)
- func (rg *RelationshipGraph) CountRelationshipGraphByCustomResourceGroup(ctx context.Context, cl storage.SearchStorage, ...) (*RelationshipGraph, error)
- func (rg *RelationshipGraph) FindNodeByGVK(group, version, kind string) (*RelationshipGraphNode, error)
- type RelationshipGraphNode
- type ResourceGraphNode
Constants ¶
const ( ParentTypeKey = "parent" ChildTypeKey = "child" )
Variables ¶
This section is empty.
Functions ¶
func GVRNamespaced ¶
func GVRNamespaced(gvr schema.GroupVersionResource, discoveryClient discovery.DiscoveryClient) bool
GVRNamespaced returns true if a given GVR is namespaced based on the result of discovery client
func GetByJSONPath ¶
func GetByJSONPath( ctx context.Context, relatedResList *unstructured.UnstructuredList, relationshipType string, client *dynamic.DynamicClient, obj unstructured.Unstructured, relation *Relationship, relatedGVK schema.GroupVersionKind, objResourceNode ResourceGraphNode, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetByJSONPath retrieves related resources based on JSON path from a given list of unstructured resources.
func GetByLabelSelector ¶
func GetByLabelSelector( ctx context.Context, relatedResList *unstructured.UnstructuredList, relationshipType string, client *dynamic.DynamicClient, obj unstructured.Unstructured, relation *Relationship, relatedGVK schema.GroupVersionKind, objResourceNode ResourceGraphNode, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetByLabelSelector retrieves related resources based on label selectors from a given list of unstructured resources.
func GetChildResourcesList ¶
func GetChildResourcesList(ctx context.Context, client *dynamic.DynamicClient, childRelation *Relationship, namespace string) (*unstructured.UnstructuredList, error)
GetChildResourcesList returns an *unstructured.UnstructuredList representing all resources that matches the child GVK in the current namespace
func GetChildren ¶
func GetChildren( ctx context.Context, client *dynamic.DynamicClient, obj unstructured.Unstructured, childRelation *Relationship, namespace, objName string, objResourceNode ResourceGraphNode, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetChildren returns a graph that includes all of the child resources for the current obj that are described by the childRelation
func GetChildrenByOwnerReference ¶
func GetChildrenByOwnerReference( ctx context.Context, childResList *unstructured.UnstructuredList, client *dynamic.DynamicClient, obj unstructured.Unstructured, childGVK schema.GroupVersionKind, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetChildrenByOwnerReference returns a graph that includes all of the child resources for the current obj described by their children's OwnerReferences field
func GetParentResourcesList ¶
func GetParentResourcesList(ctx context.Context, client *dynamic.DynamicClient, parentRelation *Relationship, namespace string) (*unstructured.UnstructuredList, error)
GetParentResourcesList returns an *unstructured.UnstructuredList representing all resources that matches the parent GVK in the current namespace
func GetParents ¶
func GetParents( ctx context.Context, client *dynamic.DynamicClient, obj unstructured.Unstructured, parentRelation *Relationship, namespace, objName string, objResourceNode ResourceGraphNode, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetParents returns a graph that includes all of the parent resources for the current obj that are described by the parentRelation
func GetParentsByOwnerReference ¶
func GetParentsByOwnerReference( ctx context.Context, client *dynamic.DynamicClient, obj unstructured.Unstructured, objResourceNode ResourceGraphNode, relationshipGraph graph.Graph[string, RelationshipGraphNode], resourceGraph graph.Graph[string, ResourceGraphNode], ) (graph.Graph[string, ResourceGraphNode], error)
GetParentsByOwnerReference returns a graph that includes all of the parent resources for the current obj described by its OwnerReferences field
func RelationshipEquals ¶
func RelationshipEquals(r, relation *Relationship) bool
RelationshipEquals returns true if two relationships are equal
Types ¶
type Relationship ¶
type Relationship struct { ParentNode *RelationshipGraphNode ChildNode *RelationshipGraphNode AutoGenerated bool Group string `json:"group,omitempty" yaml:"group,omitempty"` Version string `json:"version,omitempty" yaml:"version,omitempty"` Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` ClusterScoped bool `json:"clusterScoped,omitempty" yaml:"clusterScoped,omitempty"` Type string `json:"type,omitempty" yaml:"type,omitempty"` SelectorPath string `json:"selectorPath,omitempty" yaml:"selectorPath,omitempty"` JSONPath []map[string]string `json:"jsonPath,omitempty" yaml:"jsonPath,omitempty"` }
Relationship represents a connection between parent and child nodes in the relationship graph.
func InsertIfNotExist ¶
func InsertIfNotExist(relationList []*Relationship, relation Relationship, relationshipDirection string) ([]*Relationship, error)
InsertIfNotExist inserts relation into relationList only if it does not exist already This is used to auto-generate two-way relationships when they are not declared explicitly
func (Relationship) GetHash ¶
func (r Relationship) GetHash() string
GetHash method returns the hash of the relationship.
type RelationshipGraph ¶
type RelationshipGraph struct {
RelationshipNodes []*RelationshipGraphNode `json:"relationship,omitempty" yaml:"relationship,omitempty"`
}
RelationshipGraph represents the graph structure containing the relationships between nodes.
func BuildBuiltinRelationshipGraph ¶
func BuildBuiltinRelationshipGraph(ctx context.Context, client *dynamic.DynamicClient) (graph.Graph[string, RelationshipGraphNode], *RelationshipGraph, error)
BuildBuiltinRelationshipGraph returns the relationship graph built from the YAML describing resource relationships
func BuildRelationshipGraph ¶
func BuildRelationshipGraph(ctx context.Context, client *dynamic.DynamicClient) (graph.Graph[string, RelationshipGraphNode], *RelationshipGraph, error)
BuildRelationshipGraph builds the complete relationship graph including the built-in one and customer-specified one
func (*RelationshipGraph) CountRelationshipGraph ¶
func (rg *RelationshipGraph) CountRelationshipGraph(ctx context.Context, dynamicClient *dynamic.DynamicClient, discoveryClient *discovery.DiscoveryClient, countNamespace string) (*RelationshipGraph, error)
CountRelationshipGraph returns the same RelationshipGraph with the count for each resource
func (*RelationshipGraph) CountRelationshipGraphByCustomResourceGroup ¶
func (rg *RelationshipGraph) CountRelationshipGraphByCustomResourceGroup(ctx context.Context, cl storage.SearchStorage, resourceGroup *entity.ResourceGroup, name string) (*RelationshipGraph, error)
CountRelationshipGraphByCustomResourceGroup returns the same RelationshipGraph with the count for each custom resource group
func (*RelationshipGraph) FindNodeByGVK ¶
func (rg *RelationshipGraph) FindNodeByGVK(group, version, kind string) (*RelationshipGraphNode, error)
FindNodeByGVK locates the Node by GVK on a RelationshipGraph. Used to locate parent and child nodes when building the relationship graph
type RelationshipGraphNode ¶
type RelationshipGraphNode struct { Group string `json:"group,omitempty" yaml:"group,omitempty"` Version string `json:"version,omitempty" yaml:"version,omitempty"` Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` Parent []*Relationship `json:"parent,omitempty" yaml:"parent,omitempty"` Children []*Relationship `json:"children,omitempty" yaml:"children,omitempty"` ResourceCount int `json:"resourceCount,omitempty" yaml:"resourceCount,omitempty"` }
RelationshipGraphNode represents a node in the relationship graph.
func FindNodeOnGraph ¶
func FindNodeOnGraph(g graph.Graph[string, RelationshipGraphNode], group, version, kind string) (*RelationshipGraphNode, error)
FindNodeOnGraph locates the Node on a built relationship graph. Used to locate parent and child nodes when traversing the relationship graph
func (RelationshipGraphNode) ConvertToMap ¶
func (rgn RelationshipGraphNode) ConvertToMap() map[string]string
ConvertToMap method converts the relationship graph node to a map[string]string.
func (RelationshipGraphNode) GetHash ¶
func (rgn RelationshipGraphNode) GetHash() string
GetHash method returns the hash of the relationship graph node.
type ResourceGraphNode ¶
type ResourceGraphNode struct { Name string Namespace string Group string Version string Kind string Parent []*ResourceGraphNode Children []*ResourceGraphNode }
ResourceGraphNode represents a node in the resource graph, containing resource-specific information.
func (ResourceGraphNode) GetHash ¶
func (rgn ResourceGraphNode) GetHash() string
GetHash method returns the hash of the resource graph node.