Central Configuration System
The Central Configuration System in tlBMC provides a unified, structured mechanism to enable, disable, and parameterize various collectors and submodules. By loading a unified configuration bundle, tlBMC allows platforms to share a baseline configuration while overriding specific features for custom hardware.
The core config definitions reside in third_party/milotic/external/cc/tlbmc/central_config/.
Configuration Loading and Platform Selection
At boot, the central configuration manager loads the configuration:
- Platform Detection: Reads the target platform machine name (e.g., by checking
GBMC_TARGET_MACHINE inside /etc/os-release or similar OS configurations). - Configuration Bundle: Parses the configuration bundle protobuf textproto (usually located at
/etc/tlbmc/tlbmc_config_bundle.textproto). - Config Selection:
- The bundle contains a
general_config (type TlbmcConfig) and a map platform_to_config (mapping platform names to TlbmcConfig overrides). - If the detected platform matches a key in
platform_to_config, that platform-specific configuration merges with and overrides the general_config. - If no match is found, the baseline
general_config is used.
- Static Registry: The merged configuration is registered as a static singleton accessible via
GetTlbmcConfig().
Central Configuration Parameters
The configuration structures are defined in central_config.proto. The table below details all modules inside TlbmcConfig and their configuration options.
1. FRU Collector Module (FruCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables/disables the FRU Collector. |
allow_dangling_frus | bool | false | If true, permits loading FRUs without configs, and tolerates missing root chassis or invalid topology errors (testing only). |
own_cables_in_redfish | bool | true | If true, tlBMC takes ownership of Redfish Cable resources. |
enable_deterministic_bmc | bool | false | If true, enables deterministic hardware checks. |
own_assemblies_in_redfish | bool | false | If true, tlBMC takes ownership of Redfish Assembly resources. |
own_chassis_in_redfish | bool | true | If true, tlBMC takes ownership of individual Redfish Chassis URLs. |
no_associations_based_topology | bool | false | If true, disables deriving topology context from DBus associations. |
own_chassis_collection_in_redfish | bool | true | If true, tlBMC owns the Redfish Chassis Collection resource. |
strict_part_info_check | bool | false | If true, verifies serial and part numbers to determine presence. |
expose_systems_child_links_in_chassis | bool | false | If true, exposes Systems child links in Chassis resources. |
own_cable_collection_in_redfish | bool | false | If true, tlBMC takes ownership of Redfish Cable Collection resource. |
expose_default_system_link | bool | true | If true, expose default system link “system” in Redfish chassis and system urls when no system ID is configured. |
2. Sensor Collector Module (SensorCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables/disables the Sensor Collector. |
allow_sensor_creation_failure | bool | false | If true, sensor creation errors will not abort startup (testing only). |
thermal_control_sub_module | ThermalControlSubmodule | - | Submodule to control Fans, ThermalSubsystem, and PowerSubsystem. |
enable_threshold_monitoring | bool | false | If true, periodically monitors thresholds and logs events. |
sensor_collection_append_sub_module | SensorCollectionAppendSubmodule | - | Appends tlBMC sensors to the collection owned by gBMCWeb. |
drop_failed_duplicate_sensors | bool | false | If true, a sensor that failed creation is dropped at startup when a successfully created sensor with the same key exists. For platforms that configure one physical device under every board it could belong to because the board cannot be identified. |
own_sensor_collection_in_redfish | bool | false | If true, tlBMC will own the sensor collection in Redfish. |
ThermalControlSubmodule Options
enabled (bool, default: false): Enables thermal/power subsystem ownership (controlling Fans, PowerSupplies, and Fan Mode actions).
SensorCollectionAppendSubmodule Options
enabled (bool, default: false): Enables append mode.per_sensor_append_mode (bool, default: false): Appends individual sensors based on EM configuration.
3. Metric Collector Module (MetricCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | true | Enables/disables |
| : : : : software : | | | |
| : : : : metrics. : | | | |
collect_true_hitless_metrics | bool | true | Collects hitless |
| : : : : metrics : | | | |
| : : : : telemetry. : | | | |
enable_psi_metrics | bool | false | Collects host |
| : : : : Pressure Stall : | | | |
| : : : : Information : | | | |
| : : : : (PSI). : | | | |
enable_bios_key_metrics | bool | false | Controls the |
| : : : : BIOS Key metrics : | | | |
| : : : : collector : | | | |
| : : : : module. : | | | |
4. Install Module (InstallModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables the firmware install service |
| : : : : (UpdateService and TaskService). : | | | |
5. Redfish Rate Limiter Module (RedfishRateLimiterModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Registers the |
| : : : : rate limiter : | | | |
| : : : : service at : | | | |
| : : : : startup. : | | | |
active | bool | false | Actively |
| : : : : enforces rate : | | | |
| : : : : limits on : | | | |
| : : : : Redfish : | | | |
| : : : : routes. : | | | |
leak_rate_per_sec | double | 100.0 | Token bucket |
| : : : : fill rate : | | | |
| : : : : (sustained : | | | |
| : : : : requests/sec). : | | | |
bucket_capacity | double | 200.0 | Token bucket |
| : : : : max capacity : | | | |
| : : : : (max burst : | | | |
| : : : : size). : | | | |
bypass_uri | repeated string | - | List of |
| : : : : Redfish URIs : | | | |
| : : : : that bypass : | | | |
| : : : : rate limiting. : | | | |
red | RedfishRateLimiterRed | - | Configures |
| : : : : Random Early : | | | |
| : : : : Detection drop : | | | |
| : : : : parameters. : | | | |
6. GPIO Collector Module (GpioCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables discrete GPIO polling and the GpioCollector. |
power_control_sub_module | PowerControlSubmodule | - | Submodule to handle host power control (GPIO or file-based). |
PowerControlSubmodule Options
enabled (bool, default: false): Enables host power control.power_control_type (PowerControlType, default: POWER_CONTROL_TYPE_GPIO): Specifies the mechanism for power control.
PowerControlType Options
POWER_CONTROL_TYPE_UNSPECIFIED: Unspecified.POWER_CONTROL_TYPE_GPIO: Power control based on GPIO signals.POWER_CONTROL_TYPE_FILE_BASED: Power control based on host state file.
7. Trust Bundle Install Module (TrustBundleInstallModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables trust bundle |
| : : : : installation. If : | | | |
| : : : : enabled, tlBMC owns : | | | |
: : : : CertificateService : | | | |
| : : : : and restricts : | | | |
| : : : : recovery : | | | |
| : : : : authorization : | | | |
| : : : : policy. : | | | |
8. Power Fault Log Collector Module (PowerFaultLogCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables the Power Fault Log collector to |
| : : : : monitor and dump logs. : | | | |
9. SEL Collector Module (SelCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables System Event Log (SEL) collection and |
| : : : : persistence. : | | | |
10. PCIe Collector Module (PcieCollectorModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables the PCIe |
| : : : : collector module. : | | | |
| : : : : Requires : | | | |
: : : : GpioCollectorModule : | | | |
| : : : : to be enabled. : | | | |
enable_collection_append_mode | bool | false | If true, tlBMC |
| : : : : appends slots to : | | | |
| : : : : gBMCWeb's PCIe slot : | | | |
| : : : : collection. : | | | |
| : : : : Otherwise, gBMCWeb : | | | |
| : : : : owns the collection. : | | | |
11. TPU Debug Module (TpuDebugModule)
| Field | Type | Default | Description |
|---|
enabled | bool | false | Enables the TPU debug module. |
12. Global Parameters
| Field | Type | Default | Description |
|---|
platform_name | string | - | Name of the platform. |
use_tlbmc_lite_config | bool | false | If true, this platform uses |
| : : : : the TLBMC Lite configuration : | | | |
| : : : : as a base. : | | | |
Configuration Example (tlbmc_config_bundle.textproto)
The following textproto shows a configuration bundle defining a default baseline and overriding values for the "platform1" platform.
general_config {
platform_name: "default"
fru_collector_module {
enabled: true
own_cables_in_redfish: true
own_chassis_in_redfish: true
}
sensor_collector_module {
enabled: true
enable_threshold_monitoring: true
sensor_collection_append_sub_module {
enabled: true
per_sensor_append_mode: true
}
}
metric_collector_module {
enabled: true
}
}
platform_to_config {
key: "platform1"
value {
fru_collector_module {
enabled: true
own_assemblies_in_redfish: true
}
sensor_collector_module {
enabled: true
thermal_control_sub_module {
enabled: true
}
}
}
}
Code References
Config Protos
Core Code