Skip to content

Commit 4644016

Browse files
authored
[chore] remove utils internal package (#43637)
Moving funcs in use to different package Part of #41780 --------- Signed-off-by: alex boten <223565+codeboten@users.noreply.github.com>
1 parent a89cd7b commit 4644016

File tree

5 files changed

+126
-198
lines changed

5 files changed

+126
-198
lines changed

receiver/k8sclusterreceiver/internal/container/containers.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package container // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/container"
55

66
import (
7+
"regexp"
78
"time"
89

910
"go.opentelemetry.io/collector/pdata/pcommon"
@@ -15,7 +16,6 @@ import (
1516
metadataPkg "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata"
1617
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/constants"
1718
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/metadata"
18-
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/utils"
1919
)
2020

2121
const (
@@ -134,7 +134,7 @@ func RecordSpecMetrics(logger *zap.Logger, mb *metadata.MetricsBuilder, c corev1
134134
rb.SetK8sPodName(pod.Name)
135135
rb.SetK8sNodeName(pod.Spec.NodeName)
136136
rb.SetK8sNamespaceName(pod.Namespace)
137-
rb.SetContainerID(utils.StripContainerID(containerID))
137+
rb.SetContainerID(stripContainerID(containerID))
138138
rb.SetK8sContainerName(c.Name)
139139
image, err := docker.ParseImageName(imageStr)
140140
if err != nil {
@@ -186,7 +186,7 @@ func GetMetadata(pod *corev1.Pod, cs corev1.ContainerStatus, logger *zap.Logger)
186186
return &metadata.KubernetesMetadata{
187187
EntityType: "container",
188188
ResourceIDKey: string(conventions.ContainerIDKey),
189-
ResourceID: metadataPkg.ResourceID(utils.StripContainerID(cs.ContainerID)),
189+
ResourceID: metadataPkg.ResourceID(stripContainerID(cs.ContainerID)),
190190
Metadata: mdata,
191191
}
192192
}
@@ -197,3 +197,10 @@ func boolToInt64(b bool) int64 {
197197
}
198198
return 0
199199
}
200+
201+
var re = regexp.MustCompile(`^[\w_-]+://`)
202+
203+
// stripContainerID returns a pure container id without the runtime scheme://.
204+
func stripContainerID(id string) string {
205+
return re.ReplaceAllString(id, "")
206+
}

receiver/k8sclusterreceiver/internal/pod/pods.go

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/gvk"
2626
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/metadata"
2727
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/service"
28-
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sclusterreceiver/internal/utils"
2928
)
3029

3130
const (
@@ -184,12 +183,12 @@ func GetMetadata(pod *corev1.Pod, mc *metadata.Store, logger *zap.Logger) map[ex
184183
// collectPodJobProperties checks if pod owner of type Job is cached. Check owners reference
185184
// on Job to see if it was created by a CronJob. Sync metadata accordingly.
186185
func collectPodJobProperties(pod *corev1.Pod, jobStores map[string]cache.Store, logger *zap.Logger) map[string]string {
187-
jobRef := utils.FindOwnerWithKind(pod.OwnerReferences, constants.K8sKindJob)
186+
jobRef := findOwnerWithKind(pod.OwnerReferences, constants.K8sKindJob)
188187
if jobRef != nil {
189188
var job any
190189
var err error
191190

192-
job, err = utils.GetObjectFromStore(pod.Namespace, jobRef.Name, jobStores)
191+
job, err = getObjectFromStore(pod.Namespace, jobRef.Name, jobStores)
193192
if err != nil {
194193
logError(err, jobRef, pod.UID, logger)
195194
return nil
@@ -204,7 +203,7 @@ func collectPodJobProperties(pod *corev1.Pod, jobStores map[string]cache.Store,
204203
logError(fmt.Errorf("cannot cast %T to *batchv1.Job", job), jobRef, pod.UID, logger)
205204
return nil
206205
}
207-
if cronJobRef := utils.FindOwnerWithKind(jobObj.OwnerReferences, constants.K8sKindCronJob); cronJobRef != nil {
206+
if cronJobRef := findOwnerWithKind(jobObj.OwnerReferences, constants.K8sKindCronJob); cronJobRef != nil {
208207
return getWorkloadProperties(cronJobRef, string(conventions.K8SCronJobNameKey))
209208
}
210209
return getWorkloadProperties(jobRef, string(conventions.K8SJobNameKey))
@@ -215,12 +214,12 @@ func collectPodJobProperties(pod *corev1.Pod, jobStores map[string]cache.Store,
215214
// collectPodReplicaSetProperties checks if pod owner of type ReplicaSet is cached. Check owners reference
216215
// on ReplicaSet to see if it was created by a Deployment. Sync metadata accordingly.
217216
func collectPodReplicaSetProperties(pod *corev1.Pod, replicaSetStores map[string]cache.Store, logger *zap.Logger) map[string]string {
218-
rsRef := utils.FindOwnerWithKind(pod.OwnerReferences, constants.K8sKindReplicaSet)
217+
rsRef := findOwnerWithKind(pod.OwnerReferences, constants.K8sKindReplicaSet)
219218
if rsRef != nil {
220219
var replicaSet any
221220
var err error
222221

223-
replicaSet, err = utils.GetObjectFromStore(pod.Namespace, rsRef.Name, replicaSetStores)
222+
replicaSet, err = getObjectFromStore(pod.Namespace, rsRef.Name, replicaSetStores)
224223
if err != nil {
225224
logError(err, rsRef, pod.UID, logger)
226225
return nil
@@ -235,7 +234,7 @@ func collectPodReplicaSetProperties(pod *corev1.Pod, replicaSetStores map[string
235234
logError(fmt.Errorf("cannot cast %T to *appsv1.ReplicaSet", replicaSet), rsRef, pod.UID, logger)
236235
return nil
237236
}
238-
if deployRef := utils.FindOwnerWithKind(replicaSetObj.OwnerReferences, constants.K8sKindDeployment); deployRef != nil {
237+
if deployRef := findOwnerWithKind(replicaSetObj.OwnerReferences, constants.K8sKindDeployment); deployRef != nil {
239238
return getWorkloadProperties(deployRef, string(conventions.K8SDeploymentNameKey))
240239
}
241240
return getWorkloadProperties(rsRef, string(conventions.K8SReplicaSetNameKey))
@@ -280,3 +279,38 @@ func getPodContainerProperties(pod *corev1.Pod, logger *zap.Logger) map[experime
280279
}
281280
return km
282281
}
282+
283+
// getIDForCache returns keys to lookup resources from the cache exposed
284+
// by shared informers.
285+
func getIDForCache(namespace, resourceName string) string {
286+
return fmt.Sprintf("%s/%s", namespace, resourceName)
287+
}
288+
289+
// getObjectFromStore retrieves the requested object from the given stores.
290+
// first, the object is attempted to be retrieved from the store for all namespaces,
291+
// and if it is not found there, the namespace-specific store is used
292+
func getObjectFromStore(namespace, objName string, stores map[string]cache.Store) (any, error) {
293+
for _, storeKey := range [2]string{metadata.ClusterWideInformerKey, namespace} {
294+
if store, ok := stores[storeKey]; ok {
295+
obj, exists, err := store.GetByKey(getIDForCache(namespace, objName))
296+
if err != nil {
297+
return nil, err
298+
}
299+
if exists {
300+
return obj, nil
301+
}
302+
}
303+
}
304+
return nil, nil
305+
}
306+
307+
// findOwnerWithKind returns the OwnerReference of the matching kind from
308+
// the provided list of owner references.
309+
func findOwnerWithKind(ors []v1.OwnerReference, kind string) *v1.OwnerReference {
310+
for _, or := range ors {
311+
if or.Kind == kind {
312+
return &or
313+
}
314+
}
315+
return nil
316+
}

receiver/k8sclusterreceiver/internal/pod/pods_test.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,3 +673,78 @@ func TestPodContainerReasonMetrics(t *testing.T) {
673673
),
674674
)
675675
}
676+
677+
func TestGetIDForCache(t *testing.T) {
678+
ns := "namespace"
679+
resName := "resName"
680+
681+
actual := getIDForCache(ns, resName)
682+
683+
require.Equal(t, ns+"/"+resName, actual)
684+
}
685+
686+
func TestGetObjectFromStore_ObjectInClusterWideStore(t *testing.T) {
687+
ms := metadata.NewStore()
688+
689+
store := &testutils.MockStore{
690+
Cache: map[string]any{},
691+
}
692+
693+
ms.Setup(gvk.Job, metadata.ClusterWideInformerKey, store)
694+
store.Cache["test-namespace/test-job-0"] = testutils.NewJob("0")
695+
696+
obj, err := getObjectFromStore("test-namespace", "test-job-0", ms.Get(gvk.Job))
697+
698+
require.NoError(t, err)
699+
require.NotNil(t, obj)
700+
}
701+
702+
func TestGetObjectFromStore_ObjectInNamespacedStore(t *testing.T) {
703+
ms := metadata.NewStore()
704+
705+
store := &testutils.MockStore{
706+
Cache: map[string]any{},
707+
}
708+
709+
ms.Setup(gvk.Job, "test-namespace", store)
710+
store.Cache["test-namespace/test-job-0"] = testutils.NewJob("0")
711+
712+
obj, err := getObjectFromStore("test-namespace", "test-job-0", ms.Get(gvk.Job))
713+
714+
require.NoError(t, err)
715+
require.NotNil(t, obj)
716+
}
717+
718+
func TestGetObjectFromStore_ObjectNotFound(t *testing.T) {
719+
ms := metadata.NewStore()
720+
721+
store := &testutils.MockStore{
722+
Cache: map[string]any{},
723+
}
724+
725+
ms.Setup(gvk.Job, "other-test-namespace", store)
726+
store.Cache["test-namespace/test-job-0"] = testutils.NewJob("0")
727+
728+
obj, err := getObjectFromStore("test-namespace", "test-job-0", ms.Get(gvk.Job))
729+
730+
require.NoError(t, err)
731+
require.Nil(t, obj)
732+
}
733+
734+
func TestGetObjectFromStore_ReturnsError(t *testing.T) {
735+
ms := metadata.NewStore()
736+
737+
store := &testutils.MockStore{
738+
Cache: map[string]any{},
739+
}
740+
741+
store.WantErr = true
742+
743+
ms.Setup(gvk.Job, "test-namespace", store)
744+
store.Cache["test-namespace/test-job-0"] = testutils.NewJob("0")
745+
746+
obj, err := getObjectFromStore("test-namespace", "test-job-0", ms.Get(gvk.Job))
747+
748+
require.Error(t, err)
749+
require.Nil(t, obj)
750+
}

receiver/k8sclusterreceiver/internal/utils/kube.go

Lines changed: 0 additions & 70 deletions
This file was deleted.

0 commit comments

Comments
 (0)