Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions proto/v1/backup.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
syntax = 'proto3';

package beget.cloud.v1.backup;

import "google/api/annotations.proto";
import "cloud/proto/v1/structures.proto";

service BackupService {
rpc getAvailableCopies(GetAvailableCopiesRequest) returns (GetAvailableCopiesResponse) {
option (google.api.http) = {
get: "/v1/cloud/backup"
};
}

rpc getOrders(GetOrdersRequest) returns (GetOrdersResponse) {
option (google.api.http) = {
get: "/v1/cloud/backup/orders"
};
}

rpc restore(RestoreRequest) returns (RestoreResponse) {
option (google.api.http) = {
post: "/v1/cloud/backup/{service_id}/restore"
body: "*"
};
}
}

message GetAvailableCopiesRequest {
}

message GetAvailableCopiesResponse {
// Список доступных бекапов
repeated structures.CopyInfo copy = 1;
}

message GetOrdersRequest {
// Количество записей на страницу
uint32 limit = 1;

// Смещение относительно нулевой (последней) записи
uint32 offset = 2;
}

message GetOrdersResponse {
// История заданий по восстановлению
repeated structures.OrderInfo order = 1;
}

message RestoreRequest {
// Идентификатор бекапа
uint64 backup_id = 1;

// Идентификатор сервиса в формате uuid v4
string service_id = 2;
}

message RestoreResponse {
oneof response {
// Информация о восстановлении
structures.OrderInfo order = 1;

// Произошла ошибка при создании заявки на восстановление из бекапа
Error error = 2;
}

message Error {
// Описание ошибки
string message = 1;

// Код ошибки
Code code = 2;

enum Code {
_ = 0;

// Внутренняя ошибка
INTERNAL_ERROR = 1;

// Бекап в процессе создания
BACKUP_NOT_DONE = 2;

// Конфигурация VPS не подходит для данного бекапа
CONFIGURATION_NOT_ENOUGH = 3;

// В данном статусе VPS невозможно восстановить бекап (VPS не в статусе running/stopped)
UNSUITABLE_VPS_STATUS = 4;

// Регион бекапа не соответствует региону целевого сервера
REGION_MISMATCH = 5;

// Тип сервиса не соответствует типу бекапа
INCORRECT_SERVICE_TYPE = 6;
}
}
}
3 changes: 3 additions & 0 deletions proto/v1/cloud.proto
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ message CreateRequest {

// Регион, в котором будет создан сервис. По-умолчанию: ru1
string region = 6;

// Идентификатор бекапа, который будет восстановлен на созданный сервер
string backup_id = 8;
}

message CreateResponse {
Expand Down
82 changes: 82 additions & 0 deletions proto/v1/structures.proto
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,85 @@ message ParamConfig {
repeated string value = 1;
}
}

message CopyInfo {
// Идентификатор копии
uint64 id = 1;

// Идентификатор сервиса, в формате uuid v4
string service_id = 2;

// Имя БД, с которой создавалась резервная копия
string database_name = 3;

// Тип БД
string database_type = 4;

// Версия БД
string database_version = 5;

// Дата создания копии в RFC3339
string date_create = 6;

// Общий размер резервной копии в байтах
uint64 size = 7;

// Регион, в котором доступна копия
string region = 8;

// Конфигурация, которая использовалась сервером в момент создания резервной копии
Configuration configuration = 9;

message Configuration {
// Количество ядер процессора
uint32 cpu_count = 1;

// Объем дисковой квоты в Мб
uint32 disk_size = 2;

// Объем оперативной памяти в Мб
uint32 memory = 3;
}
}

message OrderInfo {
// Идентификатор задания
uint64 id = 1;

// Информация о соответствующей резервной копии
CopyInfo copy_info = 2;

// Дата создания задания в формате RFC3339
string backup_date_create = 3;

// Идентификатор сервиса, в формате uuid v4
string service_id = 4;

// Имя БД, на которую выполнялось восстановление
string database_name = 5;

// Тип БД
string database_type = 6;

// Дата создания задания в формате RFC3339
string date_create = 7;

// Дата завершения задания в формате RFC3339
string date_complete = 8;

// Статус задания
OrderStatus status = 9;

enum OrderStatus {
_ = 0;

// Восстанавливается
PROCESSING = 1;

// Восстановление завершено
COMPLETED = 2;

// Ошибка
ERROR = 3;
}
}