Andrey Smirnov 7c7a377857
feat: add extended hardware information to Server and ServerClass CRDs
This is final part of #735, previous part in #823.

This imports all remaining changes with some fixups minus the webhook
changes.

This change adds detailed hardware information to the Server CRD.
Hardware info is extracted by the agent from SMBIOS.
The ServerClass CRD is also updated so more precise qualifiers can be used.

Co-authored-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Gerard de Leeuw <gdeleeuw@leeuwit.nl>
Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
2022-04-15 20:43:07 +03:00

149 lines
3.0 KiB
Protocol Buffer

syntax = "proto3";
package api;
option go_package =
"github.com/talos-systems/sidero/app/sidero-controller-manager/internal/api";
service Agent {
rpc CreateServer(CreateServerRequest) returns(CreateServerResponse);
rpc MarkServerAsWiped(MarkServerAsWipedRequest)
returns(MarkServerAsWipedResponse);
rpc ReconcileServerAddresses(ReconcileServerAddressesRequest)
returns(ReconcileServerAddressesResponse);
rpc Heartbeat(HeartbeatRequest) returns(HeartbeatResponse);
rpc UpdateBMCInfo(UpdateBMCInfoRequest) returns(UpdateBMCInfoResponse);
}
message BMCInfo {
string ip = 1;
uint32 port = 2;
string user = 3;
string pass = 4;
}
message SystemInformation {
string uuid = 1;
string manufacturer = 2;
string product_name = 3;
string version = 4;
string serial_number = 5;
string sku_number = 6;
string family = 7;
}
message Processor {
string manufacturer = 1;
string product_name = 2;
string serial_number = 3;
uint32 speed = 4;
uint32 core_count = 5;
uint32 thread_count = 6;
}
message ComputeInformation {
uint32 total_core_count = 1;
uint32 total_thread_count = 2;
uint32 processor_count = 3;
repeated Processor processors = 4;
}
message MemoryModule {
string manufacturer = 1;
string product_name = 2;
string serial_number = 3;
string type = 4;
uint32 size = 5;
uint32 speed = 6;
}
message MemoryInformation {
uint32 total_size = 1;
uint32 module_count = 2;
repeated MemoryModule modules = 3;
}
enum StorageType {
Unknown = 0;
SSD = 1;
HDD = 2;
NVMe = 3;
SD = 4;
}
message StorageDevice {
StorageType type = 1;
uint64 size = 2;
string model = 3;
string serial = 4;
string name = 5;
string device_name = 6;
string uuid = 7;
string wwid = 8;
}
message StorageInformation {
uint64 total_size = 1;
uint32 device_count = 2;
repeated StorageDevice devices = 3;
}
message NetworkInterface {
uint32 index = 1;
string name = 2;
string flags = 3;
uint32 mtu = 4;
string mac = 5;
repeated string addresses = 6;
}
message NetworkInformation {
uint32 interface_count = 1;
repeated NetworkInterface interfaces = 2;
}
message HardwareInformation {
SystemInformation system = 1;
ComputeInformation compute = 2;
MemoryInformation memory = 3;
StorageInformation storage = 4;
NetworkInformation network = 5;
}
message CreateServerRequest {
HardwareInformation hardware = 1;
string hostname = 3;
}
message Address {
string type = 1;
string address = 2;
}
message CreateServerResponse {
bool wipe = 1;
bool insecure_wipe = 2;
bool setup_bmc = 3;
double reboot_timeout = 4;
}
message MarkServerAsWipedRequest {string uuid = 1;}
message HeartbeatRequest {string uuid = 1;}
message MarkServerAsWipedResponse {}
message HeartbeatResponse {}
message UpdateBMCInfoRequest {
string uuid = 1;
BMCInfo bmc_info = 2;
}
message UpdateBMCInfoResponse {}
message ReconcileServerAddressesRequest {
string uuid = 1;
repeated Address address = 2;
}
message ReconcileServerAddressesResponse {}