| edition = "2023"; |
| |
| package milotic_tlbmc; |
| |
| // Controls the FRU collector module. |
| message FruCollectorModule { |
| bool enabled = 1 [default = false]; |
| // If true, allow FRUs not mapping to a config. This is useful for testing. |
| // This should not be enabled in production: if a FRU does not map to a |
| // config, very likely the machine has unsupported hardware config. Making |
| // tlbmc own the chassis of the machine may cause incorrect links. |
| bool allow_dangling_frus = 2 [default = false]; |
| // If true, own individual cable in tlBMC. |
| bool own_cables_in_redfish = 3 [default = true]; |
| // If true, enable deterministic BMC feature for TLBMC. |
| bool enable_deterministic_bmc = 4 [default = false]; |
| // If true, own assemblies in tlBMC. This is default false because most of |
| // the current platforms do not have corresponding assembly topology defined |
| // for tlBMC to own. |
| bool own_assemblies_in_redfish = 5 [default = false]; |
| // If true, own individual chassis in tlBMC. This is default true. |
| // Platforms allows dangling FRUs and enables `enable_collection_append_mode` |
| // for sensors can set this to false. |
| bool own_chassis_in_redfish = 6 [default = true]; |
| // If true, do not derive topology based on associations. |
| // Today this is not fully implemented. Set this to true together with |
| // `own_chassis_in_redfish=false` to avoid wrong links in Redfish. |
| bool no_associations_based_topology = 7 [default = false]; |
| // If true, own chassis collection in tlBMC. This is default true because |
| // this is the default behavior of tlBMC. |
| bool own_chassis_collection_in_redfish = 8 [default = true]; |
| // If true, the deterministic FRU scanner will check serial number and part |
| // number matching to determine the presence status of a FRU. If false, the |
| // deterministic FRU scanner will mark FRUs as present as long as a valid |
| // eeprom is parsed on the designated bus. |
| bool strict_part_info_check = 9 [default = false]; |
| // PLEASE DO NOT USE UNLESS YOU REQUIRE THIS FOR DEVPATH GENERATION |
| // In old platforms, there is a hack that exposes Systems in the Chassis URL. |
| // This goes against the Refdish spec. This should only be used for legacy |
| // platforms. |
| bool expose_systems_child_links_in_chassis = 10 [default = false]; |
| // If true, own cable collection in tlBMC. |
| bool own_cable_collection_in_redfish = 11 [default = false]; |
| // If true, expose default system link "system" in Redfish chassis and system |
| // urls when no system ID is configured. |
| bool expose_default_system_link = 12 [default = true]; |
| } |
| |
| // Performs Thermal control using sensors in tlBMC. |
| // This is a submodule of the sensor collector module. |
| // SensorCollectorModule must be enabled for this module to be enabled. |
| message ThermalControlSubmodule { |
| // Enabling this module will have tlBMC own the following URLs: |
| // 1. /redfish/v1/Chassis/<str>/ThermalSubsystem and its Fans |
| // 2. /redfish/v1/Chassis/<str>/PowerSubsystem and its PowerSupplies |
| // 3. /redfish/v1/Managers/<str> |
| // 4. /redfish/v1/Managers/bmc/Actions/Manager.FanMode.Change POST |
| // 5. /redfish/v1/Managers/bmc/FanMode.Change.ActionInfo |
| // 6. /redfish/v1/Chassis/<str>/Sensors PATCH (Get is already enabled by the |
| // sensor collector module) |
| |
| // It will delete links to the following URL from Redfish: |
| // - /redfish/v1/Chassis/<str>/Thermal |
| bool enabled = 1 [default = false]; |
| } |
| |
| // Controls the options for redfish sensor collection append mode. |
| // This is a submodule of the sensor collector module. |
| // SensorCollectorModule must be enabled for this module to be enabled. |
| message SensorCollectionAppendSubmodule { |
| // If true, tlbmc will append to the sensor collection returned by gBMCWeb. |
| // Otherwise, gbmcweb will own the sensor collection. |
| bool enabled = 1 [default = false]; |
| // If true, each sensor will be appended to the sensor collection based on EM |
| // config. Otherwise, the entire collection will be appended. |
| bool per_sensor_append_mode = 2 [default = false]; |
| } |
| |
| // Controls the sensor collector module. |
| // Note, sensor collector module needs FRU collector module to be enabled. |
| message SensorCollectorModule { |
| bool enabled = 1 [default = false]; |
| // If true, allow sensor creation failures to not end tlBMC store creation. |
| // This is useful for testing. This should not be enabled in production: if |
| // sensor creation fails, very likely the machine has real hardware issues. |
| bool allow_sensor_creation_failure = 2 [default = false]; |
| |
| // Please see the ThermalControlSubmodule message for details. |
| ThermalControlSubmodule thermal_control_sub_module = 3; |
| |
| reserved 4; // Deprecated, use sensor_collection_append_sub_module instead. |
| |
| // If true, sensor collector will create a new task to check threshold for |
| // sensors periodically, then publish SEL events if the threshold is crossed. |
| bool enable_threshold_monitoring = 5 [default = false]; |
| |
| // See the SensorCollectionAppendSubmodule message for details. |
| SensorCollectionAppendSubmodule sensor_collection_append_sub_module = 6; |
| |
| // If true, tlbmc will own the sensor collection in redfish. |
| // Otherwise, gbmcweb will own the sensor collection if no config is |
| // specified. |
| bool own_sensor_collection_in_redfish = 7 [default = false]; |
| |
| // Targeted workaround for platforms where one physical device (e.g. an IBC |
| // PSU) must be configured under every board it could belong to because the |
| // board cannot be identified at config time. Only the config that matches |
| // the real hardware initializes successfully; when this flag is true, a |
| // sensor that failed creation is dropped at startup if a successfully |
| // created sensor with the same sensor key exists, so key-based lookups |
| // deterministically resolve to the working sensor. Sensors with unique |
| // keys are never dropped, regardless of status. |
| bool drop_failed_duplicate_sensors = 8 [default = false]; |
| } |
| |
| // Controls the softwate metrics collector module. |
| message MetricCollectorModule { |
| bool enabled = 1 [default = true]; |
| |
| // Controls the true hitless metrics collector module. |
| bool collect_true_hitless_metrics = 2 [default = true]; |
| // Controls the PSI metrics collector module. |
| bool enable_psi_metrics = 3 [default = false]; |
| // Controls the BIOS Key metrics collector module. |
| bool enable_bios_key_metrics = 4 [default = false]; |
| } |
| |
| // Controls the install module. |
| // If enabled, tlbmc will own UpdateService and TaskService. |
| // tlBMC will also expose a Redfihs multipart update API for firmware bundle |
| // update. |
| message InstallModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // Controls the Random Early Detection (RED) for the rate limiter. RED |
| // drops requests randomly when bucket fullness is between red_min_threshold |
| // and red_max_threshold. |
| message RedfishRateLimiterRed { |
| bool enabled = 1 [default = false]; |
| // The minimum bucket fullness threshold for RED. Below this level, no |
| // requests are dropped by RED. |
| double min_threshold = 2 [default = 50.0]; |
| // The maximum bucket fullness threshold for RED. Above this level, all |
| // incoming requests are dropped with max_drop_prob. |
| double max_threshold = 3 [default = 150.0]; |
| // The maximum drop probability when bucket level is between min and max |
| // thresholds. The actual drop probability scales linearly with bucket level |
| // in this range. |
| double max_drop_prob = 4 [default = 0.1]; |
| } |
| |
| // Controls the redfish rate limiter module. |
| message RedfishRateLimiterModule { |
| // Controls whether the rate limiter feature is available on the platform. |
| // If false, the rate limiter routes are not registered and the feature is |
| // effectively disabled at startup. |
| bool enabled = 1 [default = false]; |
| // Controls whether the rate limiter is actively enforcing limits at runtime. |
| // This field is exposed via the Redfish API as 'Active'. |
| bool active = 6 [default = false]; |
| // The rate at which the bucket leaks, in requests per second. This |
| // determines the average sustained rate of requests that can be processed. |
| double leak_rate_per_sec = 2 [default = 100.0]; |
| // The capacity of the bucket, representing the maximum burst of requests |
| // that can be handled. |
| double bucket_capacity = 3 [default = 200.0]; |
| // If red is enabled, tlbmc will use RED to drop requests randomly when bucket |
| // fullness is between red_min_threshold and red_max_threshold. |
| RedfishRateLimiterRed red = 4; |
| // A list of URIs that should bypass the rate limiter. |
| repeated string bypass_uri = 5; |
| } |
| |
| // Controls the TrustBundleInstallModule. When enabled, tlbmc will own the |
| // CertificateService. And the recovery authorization policy will be changed to |
| // only allow access to CertificateService. |
| message TrustBundleInstallModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| enum PowerControlType { |
| POWER_CONTROL_TYPE_UNSPECIFIED = 0; |
| // Power control based on GPIO signals. |
| POWER_CONTROL_TYPE_GPIO = 1; |
| // Power control based on host state file. |
| POWER_CONTROL_TYPE_FILE_BASED = 2; |
| } |
| |
| message PowerControlSubmodule { |
| bool enabled = 1 [default = false]; |
| PowerControlType power_control_type = 2 [default = POWER_CONTROL_TYPE_GPIO]; |
| } |
| |
| // Controls the GPIO collector module. |
| message GpioCollectorModule { |
| bool enabled = 1 [default = false]; |
| PowerControlSubmodule power_control_sub_module = 2; |
| } |
| |
| // Controls the Power Fault Log collector module. |
| message PowerFaultLogCollectorModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // Controls the SEL collector module. |
| message SelCollectorModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // Controls the PCIe collector module. |
| // Note, PCIe collector module needs GPIO collector module to be |
| // enabled. |
| message PcieCollectorModule { |
| // If true, tlbmc will enable this module and take actions as per the other |
| // fields in this message. If false, tlbmc will not take any actions even if |
| // other fields are enabled. |
| bool enabled = 1 [default = false]; |
| // If true, tlbmc will append to the PCIe slot collection returned by gBMCWeb. |
| // Otherwise, gbmcweb will own the PCIe slot collection. |
| bool enable_collection_append_mode = 2 [default = false]; |
| } |
| |
| // Controls the TPU debug module. |
| message TpuDebugModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // Controls the LED collector module. |
| message LedCollectorModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // A proto message to hold all configurations of the modules in tlbmc. |
| message TlbmcConfig { |
| string platform_name = 8; |
| |
| FruCollectorModule fru_collector_module = 1; |
| SensorCollectorModule sensor_collector_module = 2; |
| InstallModule install_module = 3; |
| MetricCollectorModule metric_collector_module = 4; |
| RedfishRateLimiterModule redfish_rate_limiter_module = 5; |
| TrustBundleInstallModule trust_bundle_install_module = 6; |
| GpioCollectorModule gpio_collector_module = 7; |
| PowerFaultLogCollectorModule power_fault_log_collector_module = 9; |
| SelCollectorModule sel_collector_module = 10; |
| PcieCollectorModule pcie_collector_module = 11; |
| LedCollectorModule led_collector_module = 14; |
| |
| // If true, this platform uses the TLBMC Lite configuration as a base. |
| bool use_tlbmc_lite_config = 12; |
| |
| TpuDebugModule tpu_debug_module = 13; |
| } |
| |
| message TlbmcConfigBundle { |
| TlbmcConfig general_config = 1; |
| // If a platform is specified in the map, the corresponding config will be |
| // used. |
| // Otherwise, the general config will be used. |
| // The key is the platform name, and the value is the config for the platform. |
| map<string, TlbmcConfig> platform_to_config = 2; |
| // The configuration for TLBMC Lite platforms. |
| TlbmcConfig tlbmc_lite_config = 3; |
| } |