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:

  1. Platform Detection: Reads the target platform machine name (e.g., by checking GBMC_TARGET_MACHINE inside /etc/os-release or similar OS configurations).
  2. Configuration Bundle: Parses the configuration bundle protobuf textproto (usually located at /etc/tlbmc/tlbmc_config_bundle.textproto).
  3. 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.
  4. 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)

FieldTypeDefaultDescription
enabledboolfalseEnables/disables the FRU Collector.
allow_dangling_frusboolfalseIf true, permits loading FRUs without configs, and tolerates missing root chassis or invalid topology errors (testing only).
own_cables_in_redfishbooltrueIf true, tlBMC takes ownership of Redfish Cable resources.
enable_deterministic_bmcboolfalseIf true, enables deterministic hardware checks.
own_assemblies_in_redfishboolfalseIf true, tlBMC takes ownership of Redfish Assembly resources.
own_chassis_in_redfishbooltrueIf true, tlBMC takes ownership of individual Redfish Chassis URLs.
no_associations_based_topologyboolfalseIf true, disables deriving topology context from DBus associations.
own_chassis_collection_in_redfishbooltrueIf true, tlBMC owns the Redfish Chassis Collection resource.
strict_part_info_checkboolfalseIf true, verifies serial and part numbers to determine presence.
expose_systems_child_links_in_chassisboolfalseIf true, exposes Systems child links in Chassis resources.
own_cable_collection_in_redfishboolfalseIf true, tlBMC takes ownership of Redfish Cable Collection resource.
expose_default_system_linkbooltrueIf true, expose default system link “system” in Redfish chassis and system urls when no system ID is configured.

2. Sensor Collector Module (SensorCollectorModule)

FieldTypeDefaultDescription
enabledboolfalseEnables/disables the Sensor Collector.
allow_sensor_creation_failureboolfalseIf true, sensor creation errors will not abort startup (testing only).
thermal_control_sub_moduleThermalControlSubmodule-Submodule to control Fans, ThermalSubsystem, and PowerSubsystem.
enable_threshold_monitoringboolfalseIf true, periodically monitors thresholds and logs events.
sensor_collection_append_sub_moduleSensorCollectionAppendSubmodule-Appends tlBMC sensors to the collection owned by gBMCWeb.
drop_failed_duplicate_sensorsboolfalseIf 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_redfishboolfalseIf 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)

FieldTypeDefaultDescription
enabledbooltrueEnables/disables
: : : : software :
: : : : metrics. :
collect_true_hitless_metricsbooltrueCollects hitless
: : : : metrics :
: : : : telemetry. :
enable_psi_metricsboolfalseCollects host
: : : : Pressure Stall :
: : : : Information :
: : : : (PSI). :
enable_bios_key_metricsboolfalseControls the
: : : : BIOS Key metrics :
: : : : collector :
: : : : module. :

4. Install Module (InstallModule)

FieldTypeDefaultDescription
enabledboolfalseEnables the firmware install service
: : : : (UpdateService and TaskService). :

5. Redfish Rate Limiter Module (RedfishRateLimiterModule)

FieldTypeDefaultDescription
enabledboolfalseRegisters the
: : : : rate limiter :
: : : : service at :
: : : : startup. :
activeboolfalseActively
: : : : enforces rate :
: : : : limits on :
: : : : Redfish :
: : : : routes. :
leak_rate_per_secdouble100.0Token bucket
: : : : fill rate :
: : : : (sustained :
: : : : requests/sec). :
bucket_capacitydouble200.0Token bucket
: : : : max capacity :
: : : : (max burst :
: : : : size). :
bypass_urirepeated string-List of
: : : : Redfish URIs :
: : : : that bypass :
: : : : rate limiting. :
redRedfishRateLimiterRed-Configures
: : : : Random Early :
: : : : Detection drop :
: : : : parameters. :

6. GPIO Collector Module (GpioCollectorModule)

FieldTypeDefaultDescription
enabledboolfalseEnables discrete GPIO polling and the GpioCollector.
power_control_sub_modulePowerControlSubmodule-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)

FieldTypeDefaultDescription
enabledboolfalseEnables trust bundle
: : : : installation. If :
: : : : enabled, tlBMC owns :
: : : : CertificateService :
: : : : and restricts :
: : : : recovery :
: : : : authorization :
: : : : policy. :

8. Power Fault Log Collector Module (PowerFaultLogCollectorModule)

FieldTypeDefaultDescription
enabledboolfalseEnables the Power Fault Log collector to
: : : : monitor and dump logs. :

9. SEL Collector Module (SelCollectorModule)

FieldTypeDefaultDescription
enabledboolfalseEnables System Event Log (SEL) collection and
: : : : persistence. :

10. PCIe Collector Module (PcieCollectorModule)

FieldTypeDefaultDescription
enabledboolfalseEnables the PCIe
: : : : collector module. :
: : : : Requires :
: : : : GpioCollectorModule :
: : : : to be enabled. :
enable_collection_append_modeboolfalseIf true, tlBMC
: : : : appends slots to :
: : : : gBMCWeb's PCIe slot :
: : : : collection. :
: : : : Otherwise, gBMCWeb :
: : : : owns the collection. :

11. TPU Debug Module (TpuDebugModule)

FieldTypeDefaultDescription
enabledboolfalseEnables the TPU debug module.

12. Global Parameters

FieldTypeDefaultDescription
platform_namestring-Name of the platform.
use_tlbmc_lite_configboolfalseIf 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