| 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, skip cables. This is for platforms that have cables but need time |
| // to figure out the right way to add them and have correct telemetry. |
| // TODO(b/444223906): this is a temporary solution and should be removed once |
| // cables are supported. |
| bool own_cables_in_redfish = 3 [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 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; |
| } |
| |
| // Controls the softwate metrics collector module. |
| message MetricCollectorModule { |
| bool enabled = 1 [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 { |
| bool enabled = 1 [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; |
| } |
| |
| // 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]; |
| } |
| |
| // Controls the GPIO collector module. |
| message GpioCollectorModule { |
| bool enabled = 1 [default = false]; |
| } |
| |
| // A proto message to hold all configurations of the modules in tlbmc. |
| message TlbmcConfig { |
| 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; |
| } |
| |
| 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; |
| } |