MCPcopy Create free account
hub / github.com/devfile/devworkspace-operator / GetCacheFunc

Function GetCacheFunc

pkg/cache/cache.go:37–105  ·  view source on GitHub ↗

GetCacheFunc returns a new cache function that restricts the cluster items we store in the manager's internal cache. This is required because the controller watches a lot of resource types, which can result in very high memory usage on large clusters (e.g. clusters with tens of thousands of secrets)

()

Source from the content-addressed store, hash-verified

35// internal cache. This is required because the controller watches a lot of resource types, which can
36// result in very high memory usage on large clusters (e.g. clusters with tens of thousands of secrets).
37func GetCacheFunc() (cache.NewCacheFunc, error) {
38 devworkspaceObjectSelector, err := labels.Parse(constants.DevWorkspaceIDLabel)
39 if err != nil {
40 return nil, err
41 }
42
43 // We have to treat secrets and configmaps separately since we need to support auto-mounting
44 secretObjectSelector, err := labels.Parse(fmt.Sprintf("%s=true", constants.DevWorkspaceWatchSecretLabel))
45 if err != nil {
46 return nil, err
47 }
48 configmapObjectSelector, err := labels.Parse(fmt.Sprintf("%s=true", constants.DevWorkspaceWatchConfigMapLabel))
49 if err != nil {
50 return nil, err
51 }
52 cronJobObjectSelector, err := labels.Parse(fmt.Sprintf("%s=true", constants.DevWorkspaceWatchCronJobLabel))
53 if err != nil {
54 return nil, err
55 }
56 rbacObjectSelector, err := labels.Parse("controller.devfile.io/workspace-rbac=true")
57 if err != nil {
58 return nil, err
59 }
60
61 selectors := map[client.Object]cache.ByObject{
62 &appsv1.Deployment{}: {
63 Label: devworkspaceObjectSelector,
64 },
65 &corev1.Pod{}: {
66 Label: devworkspaceObjectSelector,
67 },
68 &batchv1.Job{}: {
69 Label: devworkspaceObjectSelector,
70 },
71 &corev1.ServiceAccount{}: {
72 Label: devworkspaceObjectSelector,
73 },
74 &corev1.Service{}: {
75 Label: devworkspaceObjectSelector,
76 },
77 &networkingv1.Ingress{}: {
78 Label: devworkspaceObjectSelector,
79 },
80 &batchv1.CronJob{}: {
81 Label: cronJobObjectSelector,
82 },
83 &corev1.ConfigMap{}: {
84 Label: configmapObjectSelector,
85 },
86 &corev1.Secret{}: {
87 Label: secretObjectSelector,
88 },
89 &rbacv1.Role{}: {
90 Label: rbacObjectSelector,
91 },
92 &rbacv1.RoleBinding{}: {
93 Label: rbacObjectSelector,
94 },

Callers 3

mainFunction · 0.92
suite_test.goFile · 0.92
suite_test.goFile · 0.92

Calls 1

IsOpenShiftFunction · 0.92

Tested by

no test coverage detected