blob: 0c8783b45684d7223adb0efde8593fed9e465fce [file] [log] [blame]
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;
}