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.
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;
}

// 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;
}

// 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;
}
