func setHealthCheckInternalLoadBalancerMetrics()

in internal/pacemaker/pacemakermetrics.go [984:1045]


func setHealthCheckInternalLoadBalancerMetrics(labels map[string]string, groups []Group) {
	labels["healthcheck_monitor_interval"] = ""
	labels["healthcheck_monitor_timeout"] = ""
	labels["ilb_monitor_interval"] = ""
	labels["ilb_monitor_timeout"] = ""
	labels["ascs_healthcheck_monitor_interval"] = ""
	labels["ascs_healthcheck_monitor_timeout"] = ""
	labels["ascs_ilb_monitor_interval"] = ""
	labels["ascs_ilb_monitor_timeout"] = ""
	labels["ers_healthcheck_monitor_interval"] = ""
	labels["ers_healthcheck_monitor_timeout"] = ""
	labels["ers_ilb_monitor_interval"] = ""
	labels["ers_ilb_monitor_timeout"] = ""
	labels["has_alias_ip"] = "false"

	for _, group := range groups {
		var settings = make(map[string]string)
		var prefix string
		for _, primitive := range group.Primitives {
			switch primitive.ClassType {
			case "anything", "haproxy":
				// Health Check settings
				for _, op := range primitive.Operations {
					if op.Name == "monitor" {
						settings["healthcheck_monitor_interval"] = op.Interval
						settings["healthcheck_monitor_timeout"] = op.Timeout
					}
				}
			case "IPaddr2":
				// Internal Load Balancer settings
				for _, op := range primitive.Operations {
					if op.Name == "monitor" {
						settings["ilb_monitor_interval"] = op.Interval
						settings["ilb_monitor_timeout"] = op.Timeout
					}
				}
				if primitive.Provider == "gcp" {
					for _, nvPair := range primitive.InstanceAttributes.NVPairs {
						if nvPair.Name == "type" && nvPair.Value == "alias" {
							labels["has_alias_ip"] = "true"
						}
					}
				}
			case "SAPInstance":
				// If this primitive is present, determine if the resource group is ASCS or ERS.
				for _, nvPair := range primitive.InstanceAttributes.NVPairs {
					if nvPair.Name == "START_PROFILE" {
						switch {
						case strings.Contains(nvPair.Value, "SCS"):
							prefix = "ascs_"
						case strings.Contains(nvPair.Value, "ERS"):
							prefix = "ers_"
						}
					}
				}
			}
		}
		for k, v := range settings {
			labels[prefix+k] = strings.ReplaceAll(v, "s", "")
		}
	}
}