redfish

package
v1.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2022 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DummyRedfishFile is the filename of dummy data for Redfish API.
	DummyRedfishFile = "/etc/neco/dummy_redfish_data.json"
)

Variables

View Source
var Rules = map[string]*CollectRule{
	"dell_redfish_1.0.2.yml": {
		TraverseRule: TraverseRule{
			Root: "/redfish/v1",
			ExcludeRules: []string{
				"/JSONSchemas",
				"/Accounts",
				"/Certificates",
				"/Jobs",
				"/Logs",
				"/Registries",
				"/Roles",
				"/Sessions",
				"/AccountService",
				"/EventService",
				"/LogServices",
				"/SessionService",
				"/TaskService",
				"/UpdateService",
				"/Power/",
				"/Sensors/",
				"/Thermal/",
				"/redfish/v1/Chassis/$",
			},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Chassis/{chassis}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Power",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/PowerSupplies/{psu}/Status/Health",
						Name:    "chassis_psu_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{set}/Status/Health",
						Name:    "chassis_psu_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Voltages/{sensor}/Status/Health",
						Name:    "chassis_voltage_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Thermal",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Fans/{fan}/Status/Health",
						Name:    "chassis_fan_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{set}/Status/Health",
						Name:    "chassis_fan_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{sensor}/Status/Health",
						Name:    "chassis_temperature_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{sensor}/ReadingCelsius",
						Name:    "chassis_temperature_reading",
						Help:    "",
						Type:    "number",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "system_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/MemorySummary/Status/Health",
						Name:    "system_memory_summary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/ProcessorSummary/Status/Health",
						Name:    "system_processor_summary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/TrustedModules/{tpm}/Status/State",
						Name:    "system_tpm_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "network_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "processor_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/Controllers/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "storage_controller_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Devices/{device}/Status/Health",
						Name:    "storage_device_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "manager_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "manager_network_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
		},
	},
	"dell_redfish_1.11.0.yml": {
		TraverseRule: TraverseRule{
			Root: "/redfish/v1",
			ExcludeRules: []string{
				"/JsonSchemas",
				"/Accounts",
				"/Certificates",
				"/Jobs",
				"/Logs",
				"/Registries",
				"/Roles",
				"/Sessions",
				"/Settings",
				"/AccountService",
				"/CertificateService",
				"/EventService",
				"/JobService",
				"/LogServices",
				"/SessionService",
				"/TaskService",
				"/TelemetryService",
				"/UpdateService",
				"/Power/",
				"/Power#/",
				"/Thermal#/",
				"/Assembly#/",
				"/redfish/v1/Chassis/$",
			},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Chassis/{chassis}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}/NetworkDeviceFunctions/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_networkdevicefunctions_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_networkdevicefunctions_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}/NetworkPorts/{port}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_networkports_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_networkports_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/PCIeSlots",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Slots/{slot}/Status/State",
						Name:    "chassis_pcieslots_slots_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Power",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/PowerControl/{powercontrol}/PowerConsumedWatts",
						Name:    "chassis_power_powercontrol_powerconsumedwatts",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_powersupplies_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_powersupplies_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/Health",
						Name:    "chassis_power_powersupplies_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/State",
						Name:    "chassis_power_powersupplies_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/Health",
						Name:    "chassis_power_voltages_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/State",
						Name:    "chassis_power_voltages_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Sensors/{sensor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_sensors_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_sensors_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Thermal",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Fans/{fan}/Status/Health",
						Name:    "chassis_thermal_fans_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Fans/{fan}/Status/State",
						Name:    "chassis_thermal_fans_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_thermal_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_thermal_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Temperatures/{temperature}/ReadingCelsius",
						Name:    "chassis_thermal_temperatures_readingcelsius",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/Health",
						Name:    "chassis_thermal_temperatures_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/State",
						Name:    "chassis_thermal_temperatures_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Fabrics/{fabric}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "fabrics_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "fabrics_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/NetworkProtocol",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_networkprotocol_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_networkprotocol_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HostWatchdogTimer/Status/State",
						Name:    "systems_hostwatchdogtimer_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/MemorySummary/Status/Health",
						Name:    "systems_memorysummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/MemorySummary/Status/State",
						Name:    "systems_memorysummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/ProcessorSummary/Status/Health",
						Name:    "systems_processorsummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/ProcessorSummary/Status/State",
						Name:    "systems_processorsummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/TrustedModules/{trustedmodule}/Status/State",
						Name:    "systems_trustedmodules_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_memory_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_memory_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}/MemoryMetrics",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HealthData/AlarmTrips/AddressParityError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_addressparityerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/CorrectableECCError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_correctableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/SpareBlock",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_spareblock",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/Temperature",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_temperature",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/UncorrectableECCError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_uncorrectableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/DataLossDetected",
						Name:    "systems_memory_memorymetrics_healthdata_datalossdetected",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/PredictedMediaLifeLeftPercent",
						Name:    "systems_memory_memorymetrics_healthdata_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkInterfaces/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeDevices/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciedevices_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciedevices_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeDevices/{device}/PCIeFunctions/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciedevices_pciefunctions_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciedevices_pciefunctions_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_processors_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_processors_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/SimpleStorage/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_simplestorage_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_simplestorage_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/Health",
						Name:    "systems_storage_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/State",
						Name:    "systems_storage_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}/Drives/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/FailurePredicted",
						Name:    "systems_storage_drives_failurepredicted",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/PredictedMediaLifeLeftPercent",
						Name:    "systems_storage_drives_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_drives_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_drives_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}/StorageControllers/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/Health",
						Name:    "systems_storage_storagecontrollers_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/State",
						Name:    "systems_storage_storagecontrollers_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}/Volumes/{volume}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_volumes_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_volumes_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
		},
	},
	"dell_redfish_1.2.0.yml": {
		TraverseRule: TraverseRule{
			Root: "/redfish/v1",
			ExcludeRules: []string{
				"/JSONSchemas",
				"/Accounts",
				"/Certificates",
				"/Jobs",
				"/Logs",
				"/Registries",
				"/Roles",
				"/Sessions",
				"/AccountService",
				"/EventService",
				"/LogServices",
				"/SessionService",
				"/TaskService",
				"/UpdateService",
				"/Power/",
				"/Sensors/",
				"/Thermal/",
				"/redfish/v1/Chassis/$",
			},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Chassis/{chassis}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Power",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/PowerSupplies/{psu}/Status/Health",
						Name:    "chassis_psu_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{set}/Status/Health",
						Name:    "chassis_psu_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Voltages/{sensor}/Status/Health",
						Name:    "chassis_voltage_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Thermal",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Fans/{fan}/Status/Health",
						Name:    "chassis_fan_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{set}/Status/Health",
						Name:    "chassis_fan_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{sensor}/Status/Health",
						Name:    "chassis_temperature_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{sensor}/ReadingCelsius",
						Name:    "chassis_temperature_reading",
						Help:    "",
						Type:    "number",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "system_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/MemorySummary/Status/Health",
						Name:    "system_memory_summary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/ProcessorSummary/Status/Health",
						Name:    "system_processor_summary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/TrustedModules/{tpm}/Status/State",
						Name:    "system_tpm_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "network_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "processor_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "storage_controller_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/Drives/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "storage_device_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "manager_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "manager_network_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
		},
	},
	"dell_redfish_1.4.0.yml": {
		TraverseRule: TraverseRule{
			Root: "/redfish/v1",
			ExcludeRules: []string{
				"/JSONSchemas",
				"/Accounts",
				"/Certificates",
				"/Jobs",
				"/Logs",
				"/Registries",
				"/Roles",
				"/Sessions",
				"/Settings",
				"/AccountService",
				"/EventService",
				"/LogServices",
				"/SessionService",
				"/TaskService",
				"/UpdateService",
				"/Power/",
				"/Sensors/",
				"/Thermal/",
				"/redfish/v1/Chassis/$",
				"/StorageControllers/PCIeSSD",
			},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Chassis/{chassis}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Power",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/PowerControl/{powercontrol}/PowerConsumedWatts",
						Name:    "chassis_power_powercontrol_powerconsumedwatts",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_powersupplies_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_powersupplies_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/Health",
						Name:    "chassis_power_powersupplies_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/State",
						Name:    "chassis_power_powersupplies_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/Health",
						Name:    "chassis_power_voltages_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/State",
						Name:    "chassis_power_voltages_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Thermal",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Fans/{fan}/Status/Health",
						Name:    "chassis_thermal_fans_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Fans/{fan}/Status/State",
						Name:    "chassis_thermal_fans_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_thermal_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_thermal_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Temperatures/{temperature}/ReadingCelsius",
						Name:    "chassis_thermal_temperatures_readingcelsius",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/Health",
						Name:    "chassis_thermal_temperatures_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/State",
						Name:    "chassis_thermal_temperatures_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Fabrics/{fabric}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "fabrics_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "fabrics_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/NetworkProtocol",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_networkprotocol_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_networkprotocol_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HostWatchdogTimer/Status/State",
						Name:    "systems_hostwatchdogtimer_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/MemorySummary/Status/Health",
						Name:    "systems_memorysummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/MemorySummary/Status/State",
						Name:    "systems_memorysummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/ProcessorSummary/Status/Health",
						Name:    "systems_processorsummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/ProcessorSummary/Status/State",
						Name:    "systems_processorsummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/TrustedModules/{trustedmodule}/Status/State",
						Name:    "systems_trustedmodules_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_memory_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_memory_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}/Metrics",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HealthData/AlarmTrips/AddressParityError",
						Name:    "systems_memory_metrics_healthdata_alarmtrips_addressparityerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/CorrectableECCError",
						Name:    "systems_memory_metrics_healthdata_alarmtrips_correctableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/SpareBlock",
						Name:    "systems_memory_metrics_healthdata_alarmtrips_spareblock",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/Temperature",
						Name:    "systems_memory_metrics_healthdata_alarmtrips_temperature",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/UncorrectableECCError",
						Name:    "systems_memory_metrics_healthdata_alarmtrips_uncorrectableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/DataLossDetected",
						Name:    "systems_memory_metrics_healthdata_datalossdetected",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/PredictedMediaLifeLeftPercent",
						Name:    "systems_memory_metrics_healthdata_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkAdapters/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkadapters_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkadapters_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkAdapters/{nic}/NetworkDeviceFunctions/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkadapters_networkdevicefunctions_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkadapters_networkdevicefunctions_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkAdapters/{nic}/NetworkPorts/{port}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkadapters_networkports_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkadapters_networkports_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkInterfaces/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeDevice/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciedevice_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciedevice_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeFunction/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciefunction_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciefunction_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_processors_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_processors_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/SimpleStorage/Controllers/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Devices/{device}/Status/Health",
						Name:    "systems_simplestorage_controllers_devices_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Devices/{device}/Status/State",
						Name:    "systems_simplestorage_controllers_devices_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_simplestorage_controllers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_simplestorage_controllers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/Drives/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/FailurePredicted",
						Name:    "systems_storage_drives_failurepredicted",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/PredictedMediaLifeLeftPercent",
						Name:    "systems_storage_drives_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_drives_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_drives_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/Volumes/{volume}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_volumes_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_volumes_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/Health",
						Name:    "systems_storage_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/State",
						Name:    "systems_storage_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/StorageControllers/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
		},
	},
	"dell_redfish_1.6.0.yml": {
		TraverseRule: TraverseRule{
			Root: "/redfish/v1",
			ExcludeRules: []string{
				"/JsonSchemas",
				"/Accounts",
				"/Certificates",
				"/Jobs",
				"/Logs",
				"/Registries",
				"/Roles",
				"/Sessions",
				"/Settings",
				"/AccountService",
				"/CertificateService",
				"/EventService",
				"/JobService",
				"/LogServices",
				"/SessionService",
				"/TaskService",
				"/TelemetryService",
				"/UpdateService",
				"/Power/",
				"/Power#/",
				"/Thermal#/",
				"/Assembly#/",
				"/redfish/v1/Chassis/$",
			},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Chassis/{chassis}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}/NetworkDeviceFunctions/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_networkdevicefunctions_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_networkdevicefunctions_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/NetworkAdapters/{nic}/NetworkPorts/{port}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "chassis_networkadapters_networkports_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "chassis_networkadapters_networkports_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Power",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/PowerControl/{powercontrol}/PowerConsumedWatts",
						Name:    "chassis_power_powercontrol_powerconsumedwatts",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_powersupplies_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_powersupplies_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/Health",
						Name:    "chassis_power_powersupplies_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/PowerSupplies/{powersupply}/Status/State",
						Name:    "chassis_power_powersupplies_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_power_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_power_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/Health",
						Name:    "chassis_power_voltages_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Voltages/{voltage}/Status/State",
						Name:    "chassis_power_voltages_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Chassis/{chassis}/Thermal",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Fans/{fan}/Status/Health",
						Name:    "chassis_thermal_fans_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Fans/{fan}/Status/State",
						Name:    "chassis_thermal_fans_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/Health",
						Name:    "chassis_thermal_redundancy_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Redundancy/{redundancy}/Status/State",
						Name:    "chassis_thermal_redundancy_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Temperatures/{temperature}/ReadingCelsius",
						Name:    "chassis_thermal_temperatures_readingcelsius",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/Health",
						Name:    "chassis_thermal_temperatures_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Temperatures/{temperature}/Status/State",
						Name:    "chassis_thermal_temperatures_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Fabrics/{fabric}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "fabrics_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "fabrics_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Managers/{manager}/NetworkProtocol",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "managers_networkprotocol_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "managers_networkprotocol_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HostWatchdogTimer/Status/State",
						Name:    "systems_hostwatchdogtimer_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/MemorySummary/Status/Health",
						Name:    "systems_memorysummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/MemorySummary/Status/State",
						Name:    "systems_memorysummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/ProcessorSummary/Status/Health",
						Name:    "systems_processorsummary_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/ProcessorSummary/Status/State",
						Name:    "systems_processorsummary_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/TrustedModules/{trustedmodule}/Status/State",
						Name:    "systems_trustedmodules_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/EthernetInterfaces/{interface}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_ethernetinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_ethernetinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_memory_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_memory_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Memory/{memory}/MemoryMetrics",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/HealthData/AlarmTrips/AddressParityError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_addressparityerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/CorrectableECCError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_correctableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/SpareBlock",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_spareblock",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/Temperature",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_temperature",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/AlarmTrips/UncorrectableECCError",
						Name:    "systems_memory_memorymetrics_healthdata_alarmtrips_uncorrectableeccerror",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/DataLossDetected",
						Name:    "systems_memory_memorymetrics_healthdata_datalossdetected",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/HealthData/PredictedMediaLifeLeftPercent",
						Name:    "systems_memory_memorymetrics_healthdata_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/NetworkInterfaces/{nic}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_networkinterfaces_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_networkinterfaces_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeDevices/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciedevices_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciedevices_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/PCIeDevices/{device}/PCIeFunctions/{function}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_pciedevices_pciefunctions_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_pciedevices_pciefunctions_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_processors_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_processors_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/SimpleStorage/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_simplestorage_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_simplestorage_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_status_state",
						Help:    "",
						Type:    "state",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/Health",
						Name:    "systems_storage_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/StorageControllers/{storagecontroller}/Status/State",
						Name:    "systems_storage_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}/Drives/{device}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/FailurePredicted",
						Name:    "systems_storage_drives_failurepredicted",
						Help:    "",
						Type:    "bool",
					},
					{
						Pointer: "/PredictedMediaLifeLeftPercent",
						Name:    "systems_storage_drives_predictedmedialifeleftpercent",
						Help:    "",
						Type:    "number",
					},
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_drives_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_drives_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{storage}/Volumes/{volume}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storage_volumes_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storage_volumes_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/StorageControllers/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "systems_storagecontrollers_status_health",
						Help:    "",
						Type:    "health",
					},
					{
						Pointer: "/Status/State",
						Name:    "systems_storagecontrollers_status_state",
						Help:    "",
						Type:    "state",
					},
				},
			},
		},
	},
	"qemu.yml": {
		TraverseRule: TraverseRule{
			Root:         "/redfish/v1",
			ExcludeRules: []string{},
		},
		MetricRules: []*MetricRule{
			{
				Path: "/redfish/v1/Systems/{system}/Processors/{processor}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "processor_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
			{
				Path: "/redfish/v1/Systems/{system}/Storage/{controller}",
				PropertyRules: []*PropertyRule{
					{
						Pointer: "/Status/Health",
						Name:    "storage_controller_status_health",
						Help:    "",
						Type:    "health",
					},
				},
			},
		},
	},
}

Functions

This section is empty.

Types

type Client

type Client interface {
	Traverse(ctx context.Context, rule *CollectRule) Collected
	GetVersion(ctx context.Context) (string, error)
}

Client is an interface of a client for Redfish API.

func NewMockClient

func NewMockClient(filename string) Client

NewMockClient create a mock client mock.

func NewRedfishClient

func NewRedfishClient(cc *ClientConfig) (Client, error)

NewRedfishClient create a client for Redfish API

type ClientConfig

type ClientConfig struct {
	AddressConfig *config.AddressConfig
	Port          string
	UserConfig    *config.UserConfig
	Rule          *CollectRule
	NoEscape      bool
}

ClientConfig is a set of configurations for redfishClient.

type CollectRule

type CollectRule struct {
	TraverseRule TraverseRule  `json:"Traverse"`
	MetricRules  []*MetricRule `json:"Metrics"`
}

CollectRule is a set of rules of traversing and converting Redfish data.

func (*CollectRule) Compile

func (cr *CollectRule) Compile() error

Compile fills private fields of CollectRule and its descendants.

func (CollectRule) Validate

func (cr CollectRule) Validate() error

Validate checks CollectRule and its Descendants.

type Collected

type Collected struct {
	// contains filtered or unexported fields
}

Collected represents the collected data from Redfish

func NewCollected

func NewCollected(data map[string]*gabs.Container, rule *CollectRule) *Collected

NewCollected creates a new Collected instance

func (Collected) Data

func (c Collected) Data() map[string]*gabs.Container

Data returns the collected data

func (Collected) Rule

func (c Collected) Rule() *CollectRule

Rule returns the rul.

type Collector

type Collector struct {
	// contains filtered or unexported fields
}

Collector implements prometheus.Collector interface.

func NewCollector

func NewCollector(ruleGetter RuleGetter, client Client) (*Collector, error)

NewCollector returns a new instance of Collector.

func (Collector) Collect

func (c Collector) Collect(ch chan<- prometheus.Metric)

Collect sends metrics Collected from BMC via Redfish.

func (Collector) Describe

func (c Collector) Describe(ch chan<- *prometheus.Desc)

Describe sends descriptions of metrics.

func (*Collector) Update

func (c *Collector) Update(ctx context.Context)

Update collects metrics from BMCs via Redfish.

type MetricRule

type MetricRule struct {
	Path          string          `json:"Path"`
	PropertyRules []*PropertyRule `json:"Properties"`
}

MetricRule is a set of rules of converting Redfish data for one URL path or patterned-path.

func (MetricRule) MatchPath

func (mr MetricRule) MatchPath(path string) (bool, []string)

MatchPath returns whether the path matches the rule

type PropertyRule

type PropertyRule struct {
	Pointer string `json:"Pointer"`
	Name    string `json:"Name"`
	Help    string `json:"Help,omitempty"`
	Type    string `json:"Type"`
	// contains filtered or unexported fields
}

PropertyRule is a rule of converting Redfish data into a Prometheus metric.

type RuleGetter

type RuleGetter func(context.Context) (*CollectRule, error)

RuleGetter is the type to obtain dynamic rules

type TraverseRule

type TraverseRule struct {
	Root         string   `json:"Root"`
	ExcludeRules []string `json:"Excludes"`
	// contains filtered or unexported fields
}

TraverseRule is a set of rules of traversing Redfish data.

func (TraverseRule) NeedTraverse

func (tr TraverseRule) NeedTraverse(path string) bool

NeedTraverse returns whether the path need to be traverse

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL