func setERSConfigMetrics()

in internal/pacemaker/pacemakermetrics.go [819:867]


func setERSConfigMetrics(ctx context.Context, labels map[string]string, groups []Group) {
	labels["ers_automatic_recover"] = ""
	labels["is_ers"] = ""
	labels["ers_monitor_interval"] = ""
	labels["ers_monitor_timeout"] = ""
	instanceAttributes := map[string]string{
		"AUTOMATIC_RECOVER": "ers_automatic_recover",
		"IS_ERS":            "is_ers",
	}

	// Identify the resource group containing the ERS resource.
	var ersGroup *Group
ERSLoop:
	for _, group := range groups {
		for _, primitive := range group.Primitives {
			if primitive.ClassType != "SAPInstance" {
				continue
			}
			for _, nvPair := range primitive.InstanceAttributes.NVPairs {
				if nvPair.Name == "START_PROFILE" && strings.Contains(nvPair.Value, "ERS") {
					ersGroup = &group
					break ERSLoop
				}
			}
		}
	}

	if ersGroup == nil {
		log.CtxLogger(ctx).Debug("Could not find ERS resource group. Skipping ERS metric collection.")
		return
	}

	for _, primitive := range ersGroup.Primitives {
		if primitive.ClassType != "SAPInstance" {
			continue
		}
		for _, nvPair := range primitive.InstanceAttributes.NVPairs {
			if key, ok := instanceAttributes[nvPair.Name]; ok {
				labels[key] = nvPair.Value
			}
		}
		for _, op := range primitive.Operations {
			if op.Name == "monitor" {
				labels["ers_monitor_interval"] = op.Interval
				labels["ers_monitor_timeout"] = op.Timeout
			}
		}
	}
}