syntax = "proto3";

option go_package = "github.com/edgelesssys/constellation/v2/debugd/service";

package debugd;

service Debugd {
    rpc SetInfo (SetInfoRequest) returns (SetInfoResponse) {}
    rpc GetInfo (GetInfoRequest) returns (GetInfoResponse) {}
    rpc UploadBootstrapper(stream Chunk) returns (UploadBootstrapperResponse) {}
    rpc DownloadBootstrapper(DownloadBootstrapperRequest) returns (stream Chunk) {}
    rpc UploadSystemServiceUnits(UploadSystemdServiceUnitsRequest) returns (UploadSystemdServiceUnitsResponse) {}
}

message SetInfoRequest {
    repeated Info info = 1;
}

message SetInfoResponse {}

message GetInfoRequest {}

message GetInfoResponse {
    repeated Info info = 1;
}

message Info {
    string key = 1;
    string value = 2;
}


message DownloadBootstrapperRequest {}

message Chunk {
    bytes content = 1;
}

message UploadBootstrapperResponse {
    UploadBootstrapperStatus status = 1;
}

enum UploadBootstrapperStatus {
    UPLOAD_BOOTSTRAPPER_SUCCESS = 0;
    UPLOAD_BOOTSTRAPPER_UPLOAD_FAILED = 1;
    UPLOAD_BOOTSTRAPPER_START_FAILED = 2;
    UPLOAD_BOOTSTRAPPER_FILE_EXISTS = 3;
}

message ServiceUnit {
    string name = 1;
    string contents = 2;
}

message UploadSystemdServiceUnitsRequest {
    repeated ServiceUnit units = 1;
}

message UploadSystemdServiceUnitsResponse {
    UploadSystemdServiceUnitsStatus status = 1;
}

enum UploadSystemdServiceUnitsStatus {
    UPLOAD_SYSTEMD_SERVICE_UNITS_SUCCESS = 0;
    UPLOAD_SYSTEMD_SERVICE_UNITS_FAILURE = 1;
}
