talos
1syntax = "proto3";
2
3package storage;
4
5option go_package = "github.com/siderolabs/talos/pkg/machinery/api/storage";
6
7import "common/common.proto";
8import "google/protobuf/empty.proto";
9
10// StorageService represents the storage service.
11service StorageService {
12rpc Disks(google.protobuf.Empty) returns (DisksResponse);
13}
14
15// Disk represents a disk.
16message Disk {
17// Size indicates the disk size in bytes.
18uint64 size = 1;
19// Model idicates the disk model.
20string model = 2;
21// DeviceName indicates the disk name (e.g. `sda`).
22string device_name = 3;
23// Name as in `/sys/block/<dev>/device/name`.
24string name = 4;
25// Serial as in `/sys/block/<dev>/device/serial`.
26string serial = 5;
27// Modalias as in `/sys/block/<dev>/device/modalias`.
28string modalias = 6;
29// Uuid as in `/sys/block/<dev>/device/uuid`.
30string uuid = 7;
31// Wwid as in `/sys/block/<dev>/device/wwid`.
32string wwid = 8;
33enum DiskType {
34UNKNOWN = 0;
35SSD = 1;
36HDD = 2;
37NVME = 3;
38SD = 4;
39CD = 5;
40}
41// Type is a type of the disk: nvme, ssd, hdd, sd card.
42DiskType type = 9;
43// BusPath is the bus path of the disk.
44string bus_path = 10;
45// SystemDisk indicates that the disk is used as Talos system disk.
46bool system_disk = 11;
47// Subsystem is the symlink path in the `/sys/block/<dev>/subsystem`.
48string subsystem = 12;
49// Readonly specifies if the disk is read only.
50bool readonly = 13;
51}
52
53// DisksResponse represents the response of the `Disks` RPC.
54message Disks {
55common.Metadata metadata = 1;
56repeated Disk disks = 2;
57}
58
59message DisksResponse {
60repeated Disks messages = 1;
61}
62