edition = "2023";

package milotic_tlbmc;

// FRU associations derived from an entity configuration and the FRU table.
// To populate the FRU associations, we need to successfully probe the FRU and
// upstream/ downstream FRUs as expressed in the entity configuration.
message FruInfo {
  string fru_key = 1;
  bool is_sub_fru = 2 [default = false];
}

// Type of a port.
enum PortType {
  PORT_TYPE_UNKNOWN = 0;
  PORT_TYPE_UPSTREAM = 1;
  PORT_TYPE_DOWNSTREAM = 2;
  PORT_TYPE_POWER_UPSTREAM = 3;
  PORT_TYPE_POWER_DOWNSTREAM = 4;
}

// Port configuration derived from an entity configuration.
message PortConfig {
  PortType port_type = 1;
  string port_name = 2;
  string port_label = 3;
}

// Location type of the part.
// See LocationType in:
// https://www.dmtf.org/sites/default/files/standards/documents/DSP2046_2024.2.html
enum PartLocationType {
  PART_LOCATION_TYPE_UNSPECIFIED = 0;
  PART_LOCATION_TYPE_BACKPLANE = 1;
  PART_LOCATION_TYPE_BAY = 2;
  PART_LOCATION_TYPE_CONNECTOR = 3;
  PART_LOCATION_TYPE_EMBEDDED = 4;
  PART_LOCATION_TYPE_SLOT = 5;
  PART_LOCATION_TYPE_SOCKET = 6;
}

// Location context of a resource.
message LocationContext {
  string devpath = 1;
  repeated string logical_identifiers = 2;
  PartLocationType location_type = 3;
}

enum StorageLinkType {
  STORAGE_LINK_TYPE_UNKNOWN = 0;
  STORAGE_LINK_TYPE_SYSTEMS = 1;
  STORAGE_LINK_TYPE_ROOT = 2;
}

message StorageLinkConfig {
  StorageLinkType link_type = 1;
}

message StorageIdInfo {
  string id = 1;
  StorageLinkConfig link_config = 2;
}

// FRU topology node derived from an entity configuration.
message TopologyConfigNode {
  // Name of the node, typically the config name.
  string name = 1;
  // FRU key of the node, typically the key in the FRU table.
  FruInfo fru_info = 2;
  // Port config of the upstream port the FRU is supposed to be connected to.
  repeated PortConfig upstream_port_configs = 3;
  // Port config of the upstream power ports the FRU is supposed to be connected
  // to.
  repeated PortConfig upstream_power_port_configs = 25;
  // Ports exposed by the FRU.
  // These may be downstream or upstream of any connected FRU.
  map<string, PortConfig> port_configs = 4;
  // Power Ports exposed by the FRU.
  // These may be downstream or upstream of any connected FRU.
  map<string, PortConfig> power_port_configs = 26;
  // Config keys of the sub FRUs.
  repeated string sub_fru_config_keys = 5;
  // Location context of the resource.
  LocationContext location_context = 8;
  // Root location code of the resource.
  string root_chassis_location_code = 15;
  // Parent object. TODO(b/437018647): deprecate this field.
  string parent_resource_id = 9;
  // Child resource objects.
  // TODO(b/409103531): Generalize associations in tlBMC data model.
  repeated string children_chassis_ids = 10;
  repeated string children_cable_ids = 11;
  repeated StorageIdInfo children_storage_ids = 13;
  repeated string children_assembly_ids = 16;
  repeated string children_system_ids = 22;
  // These resource names may not always be unique. These will map name to
  // topology node key.
  map<string, string> children_processors = 12;
  // Redfish-facing processor ID when it differs from the topology name.
  // Keyed by the same processor name as children_processors.
  map<string, string> redfish_processor_ids = 28;
  map<string, string> children_fans = 20;
  map<string, string> children_dimms = 21;
  // Only chassis and cable are possible parents.
  repeated string parent_chassis_ids = 17;
  repeated string parent_cable_ids = 18;
  // Chassis that this node powers or is powered by.
  repeated string powers_ids = 23;
  repeated string powered_by_ids = 24;

  // Manager for this node.
  repeated string managed_by_ids = 27;

  // Whether the config in this node is supported by tlBMC query. If true, this
  // node will not be returned in GetAllConfigNames() since this config is not
  // supported by tlBMC at the moment.
  bool not_owned_by_tlbmc = 14;
  string config_key = 19;
}

// FRU topology derived from the entity configurations.
message TopologyConfig {
  // Root node of the topology.
  string root_node_key = 1;
  // Map of config key to topology node.
  map<string, TopologyConfigNode> topology_config_nodes = 2;
  // Map of FRU key to config key.
  map<string, string> fru_configs = 3;
}
