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

Method Load

controllers/experimental/tree_loader.go:41–84  ·  view source on GitHub ↗
(ctx context.Context, reader client.Reader, req ctrl.Request, recorder record.EventRecorder, logger logr.Logger)

Source from the content-addressed store, hash-verified

39type treeLoader struct{}
40
41func (t *treeLoader) Load(ctx context.Context, reader client.Reader, req ctrl.Request, recorder record.EventRecorder, logger logr.Logger) (*kubebuilderx.ObjectTree, error) {
42 tree, err := kubebuilderx.ReadObjectTree[*experimental.NodeCountScaler](ctx, reader, req, nil)
43 if err != nil {
44 return nil, err
45 }
46 root := tree.GetRoot()
47 if root == nil {
48 return tree, nil
49 }
50 scaler, _ := root.(*experimental.NodeCountScaler)
51 key := types.NamespacedName{Namespace: scaler.Namespace, Name: scaler.Spec.TargetClusterName}
52 cluster := &appsv1.Cluster{}
53 if err = reader.Get(ctx, key, cluster); err != nil {
54 return nil, err
55 }
56 if err = tree.Add(cluster); err != nil {
57 return nil, err
58 }
59 for _, compName := range scaler.Spec.TargetComponentNames {
60 name := constant.GenerateClusterComponentName(scaler.Spec.TargetClusterName, compName)
61 key = types.NamespacedName{Namespace: scaler.Namespace, Name: name}
62 its := &workloads.InstanceSet{}
63 if err = reader.Get(ctx, key, its); err != nil {
64 return nil, err
65 }
66 if err = tree.Add(its); err != nil {
67 return nil, err
68 }
69 }
70 nodeList := &corev1.NodeList{}
71 if err = reader.List(ctx, nodeList); err != nil {
72 return nil, err
73 }
74 for i := range nodeList.Items {
75 if err = tree.Add(&nodeList.Items[i]); err != nil {
76 return nil, err
77 }
78 }
79
80 tree.EventRecorder = recorder
81 tree.Logger = logger
82
83 return tree, nil
84}
85
86func objectTree() kubebuilderx.TreeLoader {
87 return &treeLoader{}

Callers

nothing calls this directly

Calls 6

ReadObjectTreeFunction · 0.92
GetRootMethod · 0.80
AddMethod · 0.80
GetMethod · 0.65
ListMethod · 0.65

Tested by

no test coverage detected