edition = "2023";

package milotic_tlbmc;

import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";

// Refresh mode of telemetry data.
enum RefreshMode {
  // Default value.
  REFRESH_MODE_UNSPECIFIED = 0;
  // Data is refreshed on demand.
  REFRESH_MODE_ON_DEMAND = 1;
  // Data is refreshed periodically.
  REFRESH_MODE_PERIODIC = 2;
}

message RefreshPolicy {
  // Refresh mode of telemetry data.
  RefreshMode refresh_mode = 1;
  // Refresh interval of telemetry data.
  google.protobuf.Duration refresh_interval = 2;
}

// State of telemetry data.
// LINT.IfChange
enum Status {
  // Data has not been initialized by the collector.
  // Default state on boot.
  STATUS_UNKNOWN = 0;
  // Fresh data ready to be served.
  STATUS_READY = 1;
  // State when data refresh timed out or an error occurred preventing future
  // refreshes.
  STATUS_STALE = 2;
  // State when sensor creation failed, but
  // TlbmcConfig.allow_sensor_creation_failure is true, allowing tlBMC store
  // creation to continue. This sensor's data is invalid and will not refresh.
  STATUS_CREATION_FAILED = 3;
  // State when sensor creation failed but the sensor is not detected yet, so we
  // set its creation as pending.
  STATUS_CREATION_PENDING = 4;
}
// LINT.ThenChange(//depot/google3/third_party/milotic/external/cc/hft/types/sensor_payload.proto)

// Type of the resource object.
enum ResourceType {
  RESOURCE_TYPE_UNSPECIFIED = 0;
  RESOURCE_TYPE_BOARD = 1;
  RESOURCE_TYPE_CABLE = 2;
  RESOURCE_TYPE_PROCESSOR = 3;
  RESOURCE_TYPE_STORAGE = 4;
  RESOURCE_TYPE_COMPUTER_SYSTEM = 5;
  RESOURCE_TYPE_FAN = 6;
  RESOURCE_TYPE_ASSEMBLY = 7;
  RESOURCE_TYPE_DIMM = 8;
}

// Type of the chassis, used when resource type is RESOURCE_TYPE_BOARD.
// See ChassisType in: https://redfish.dmtf.org/schemas/v1/Chassis.v1_26_0.json
enum ChassisType {
  CHASSIS_TYPE_UNSPECIFIED = 0;
  CHASSIS_TYPE_RACK_MOUNT = 1;
  CHASSIS_TYPE_MODULE = 2;
  CHASSIS_TYPE_STORAGE_ENCLOSURE = 3;
  CHASSIS_TYPE_COMPONENT = 4;
  CHASSIS_TYPE_STANDALONE = 5;
}

message ChassisProperties {
  ChassisType chassis_type = 1;
  bool bmcnet = 2;
}

message Attributes {
  // Unique key of the resource.
  string key = 1;
  // Status of the resource.
  Status status = 2;
  // Refresh mode of the resource.
  RefreshPolicy refresh_policy = 3;
  // Last time the resource was refreshed.
  google.protobuf.Timestamp last_refreshed_time = 4;
  google.protobuf.Timestamp next_refreshed_time = 5;
  // Status message. Can be used to provide more details about the status
  // especially when the status is not ready.
  string status_message = 6;
  // Type of the resource.
  ResourceType resource_type = 7;
  // Properties for Chassis resources, only exist when resource type is
  // RESOURCE_TYPE_BOARD.
  ChassisProperties chassis_properties = 8;
}

// State of the resource.
message State {
  Status status = 1;
  string status_message = 2;
}
