operatortrace-go/pkg/client/utils.go (42 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. // pkg/client/utils.go package client import ( "fmt" "reflect" "sigs.k8s.io/controller-runtime/pkg/client" ) // getCallerKindFromNamespacedName extracts the caller kind from the key.Name func getCallerKindFromNamespacedName(key client.ObjectKey) string { embedTraceID := &EmbedTraceID{} if err := embedTraceID.FromString(key.Name); err != nil { return "" } return embedTraceID.ObjectKind } // getCallerNameFromNamespacedName extracts the caller name from the key.Name func getCallerNameFromNamespacedName(key client.ObjectKey) string { embedTraceID := &EmbedTraceID{} if err := embedTraceID.FromString(key.Name); err != nil { return "" } return embedTraceID.ObjectName } // getNameFromNamespacedName extracts the original name from the key.Name func getNameFromNamespacedName(key client.ObjectKey) string { embedTraceID := &EmbedTraceID{} if err := embedTraceID.FromString(key.Name); err != nil { return key.Name } return embedTraceID.KeyName } func convertToString(value interface{}) (string, error) { v := reflect.ValueOf(value) switch v.Kind() { case reflect.String: return v.String(), nil case reflect.Interface: // Handle the case where the value is an interface return convertToString(v.Elem().Interface()) default: // Check if the value has a String() method stringer, ok := value.(fmt.Stringer) if ok { return stringer.String(), nil } return "", fmt.Errorf("unsupported type: %T", value) } }