diff --git a/generator/tree.go b/generator/tree.go index 9c644f8d..e1637197 100644 --- a/generator/tree.go +++ b/generator/tree.go @@ -360,7 +360,10 @@ func generateConfigModule(cfg *ModuleConfig, node *Node, nameToNode map[string]* return // Ignored metric. } + // Afi (Address family) prevType := "" + // Safi (Subsequent address family, e.g. Multicast/Unicast) + prev2Type := "" for count, i := range n.Indexes { index := &config.Index{Labelname: i} indexNode, ok := nameToNode[i] @@ -383,11 +386,14 @@ func generateConfigModule(cfg *ModuleConfig, node *Node, nameToNode map[string]* if subtype, ok := combinedTypes[index.Type]; ok { if prevType == subtype { metric.Indexes = metric.Indexes[:len(metric.Indexes)-1] + } else if prev2Type == subtype { + metric.Indexes = metric.Indexes[:len(metric.Indexes)-2] } else { level.Warn(logger).Log("msg", "Can't handle index type on node, missing preceding", "node", n.Label, "type", index.Type, "missing", subtype) return } } + prev2Type = prevType prevType = indexNode.TextualConvention metric.Indexes = append(metric.Indexes, index) }