MCPcopy
hub / github.com/apecloud/kubeblocks / getObjectsFromTree

Function getObjectsFromTree

controllers/trace/util.go:639–674  ·  view source on GitHub ↗
(tree *tracev1.ObjectTreeNode, store ObjectRevisionStore, scheme *runtime.Scheme)

Source from the content-addressed store, hash-verified

637}
638
639func getObjectsFromTree(tree *tracev1.ObjectTreeNode, store ObjectRevisionStore, scheme *runtime.Scheme) (map[model.GVKNObjKey]client.Object, error) {
640 if tree == nil {
641 return nil, nil
642 }
643 objectRef := objectReferenceToRef(&tree.Primary)
644 revision := parseRevision(tree.Primary.ResourceVersion)
645 obj, err := store.Get(objectRef, revision)
646 if err != nil && !apierrors.IsNotFound(err) {
647 return nil, err
648 }
649 objectMap := make(map[model.GVKNObjKey]client.Object)
650 // cache loss after controller restarted, mock one
651 if obj == nil {
652 ro, err := scheme.New(objectRef.GroupVersionKind)
653 if err != nil {
654 return nil, err
655 }
656 obj, _ = ro.(client.Object)
657 obj.SetNamespace(tree.Primary.Namespace)
658 obj.SetName(tree.Primary.Name)
659 obj.SetResourceVersion(tree.Primary.ResourceVersion)
660 obj.SetUID(tree.Primary.UID)
661 }
662 objectMap[*objectRef] = obj
663
664 for _, treeNode := range tree.Secondaries {
665 secondaryMap, err := getObjectsFromTree(treeNode, store, scheme)
666 if err != nil {
667 return nil, err
668 }
669 for key, object := range secondaryMap {
670 objectMap[key] = object
671 }
672 }
673 return objectMap, nil
674}
675
676func getObjectTreeWithRevision(primary client.Object, ownershipRules []OwnershipRule, store ObjectRevisionStore, revision int64, scheme *runtime.Scheme) (*tracev1.ObjectTreeNode, error) {
677 // find matched rules

Callers 3

util_test.goFile · 0.85
ReconcileMethod · 0.85
treeObjectLoaderFunction · 0.85

Calls 7

objectReferenceToRefFunction · 0.85
SetNamespaceMethod · 0.80
SetResourceVersionMethod · 0.80
parseRevisionFunction · 0.70
GetMethod · 0.65
SetNameMethod · 0.45
SetUIDMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…