in kubernetes/metadata/resource.go [101:174]
func (r *Resource) GenerateK8s(kind string, obj kubernetes.Resource, options ...FieldOptions) mapstr.M {
accessor, err := meta.Accessor(obj)
if err != nil {
return nil
}
var labelMap mapstr.M
if len(r.config.IncludeLabels) == 0 {
labelMap = GenerateMap(accessor.GetLabels(), r.config.LabelsDedot)
} else {
labelMap = generateMapSubset(accessor.GetLabels(), r.config.IncludeLabels, r.config.LabelsDedot, r.config.UseRegexInclude)
}
var labelMaptoExclude mapstr.M
if len(r.config.ExcludeLabels) != 0 {
labelMaptoExclude = generateMapSubset(accessor.GetLabels(), r.config.ExcludeLabels, r.config.LabelsDedot, r.config.UseRegexExclude)
}
// Exclude any labels that are present in the exclude_labels config
for label := range labelMaptoExclude {
_ = labelMap.Delete(label)
}
annotationsMap := generateMapSubset(accessor.GetAnnotations(), r.config.IncludeAnnotations, r.config.AnnotationsDedot, r.config.UseRegexInclude)
meta := mapstr.M{
strings.ToLower(kind): mapstr.M{
"name": accessor.GetName(),
"uid": string(accessor.GetUID()),
},
}
namespaceName := accessor.GetNamespace()
if namespaceName != "" {
_ = safemapstr.Put(meta, "namespace", namespaceName)
if r.namespace != nil {
nsMeta := r.namespace.GenerateFromName(namespaceName)
if nsMeta != nil {
meta.DeepUpdate(nsMeta)
}
}
}
// Add controller metadata if present
for _, ref := range accessor.GetOwnerReferences() {
if ref.Controller != nil && *ref.Controller {
switch ref.Kind {
// grow this list as we keep adding more `state_*` metricsets
case deploymentType,
"ReplicaSet",
"StatefulSet",
"DaemonSet",
"Job",
"CronJob":
_ = safemapstr.Put(meta, strings.ToLower(ref.Kind)+".name", ref.Name)
}
}
}
if len(labelMap) != 0 {
_ = safemapstr.Put(meta, "labels", labelMap)
}
if len(annotationsMap) != 0 {
_ = safemapstr.Put(meta, "annotations", annotationsMap)
}
for _, option := range options {
option(meta)
}
return meta
}