|
5 | 5 | "fmt" |
6 | 6 | "slices" |
7 | 7 | "strconv" |
8 | | - "strings" |
9 | 8 |
|
10 | 9 | apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" |
11 | 10 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
@@ -59,25 +58,27 @@ func (h *ManagedHandler) sendStatusBasedMetricValue(ctx context.Context) (string |
59 | 58 | // Create a new data point for each resource |
60 | 59 | dataPoint := clientoptl.NewDataPoint() |
61 | 60 |
|
62 | | - // Add GVK dimensions from resource |
63 | | - gv, err := schema.ParseGroupVersion(cr.MangedResource.APIVersion) |
| 61 | + objMap, err := runtime.DefaultUnstructuredConverter.ToUnstructured(&cr.MangedResource) |
64 | 62 | if err != nil { |
65 | 63 | return "", err |
66 | 64 | } |
67 | | - dataPoint.AddDimension(KIND, cr.MangedResource.Kind) |
68 | | - dataPoint.AddDimension(GROUP, gv.Group) |
69 | | - dataPoint.AddDimension(VERSION, gv.Version) |
| 65 | + |
| 66 | + u := &unstructured.Unstructured{Object: objMap} |
| 67 | + |
| 68 | + for key, expr := range h.metric.Spec.Dimensions { |
| 69 | + s, _, err := nestedPrimitiveValue(*u, expr) |
| 70 | + if err != nil { |
| 71 | + fmt.Printf("WARN: Could not parse expression '%s' for dimension field '%s'. Error: %v\n", key, expr, err) |
| 72 | + continue |
| 73 | + } |
| 74 | + dataPoint.AddDimension(key, s) |
| 75 | + } |
70 | 76 |
|
71 | 77 | // Add cluster dimension if available |
72 | 78 | if h.clusterName != nil { |
73 | 79 | dataPoint.AddDimension(CLUSTER, *h.clusterName) |
74 | 80 | } |
75 | 81 |
|
76 | | - // Add status conditions as dimensions |
77 | | - for typ, state := range cr.Status { |
78 | | - dataPoint.AddDimension(strings.ToLower(typ), strconv.FormatBool(state)) |
79 | | - } |
80 | | - |
81 | 82 | // Set the value to 1 for each resource |
82 | 83 | dataPoint.SetValue(1) |
83 | 84 |
|
|
0 commit comments