diff --git a/common/proto/backup.proto b/common/proto/backup.proto index 181e44bc..23ea3dda 100644 --- a/common/proto/backup.proto +++ b/common/proto/backup.proto @@ -6,6 +6,7 @@ import "common.proto"; service BackupService { rpc StartBackup(StartBackupRequest) returns (BackupOperationResponse); rpc StartCheck(komp_ac.common.Empty) returns (BackupOperationResponse); + rpc StartDump(komp_ac.common.Empty) returns (BackupOperationResponse); rpc GetBackupInfo(komp_ac.common.Empty) returns (BackupInfoResponse); rpc GetOperationStatus(GetOperationStatusRequest) returns (BackupOperationResponse); } @@ -21,6 +22,7 @@ enum OperationKind { OPERATION_KIND_UNSPECIFIED = 0; OPERATION_KIND_BACKUP = 1; OPERATION_KIND_CHECK = 2; + OPERATION_KIND_DUMP = 3; } enum OperationStatus { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index 457b8c20..2c0fd2b6 100644 Binary files a/common/src/proto/descriptor.bin and b/common/src/proto/descriptor.bin differ diff --git a/common/src/proto/komp_ac.backup.rs b/common/src/proto/komp_ac.backup.rs index 702553e3..9076e69e 100644 --- a/common/src/proto/komp_ac.backup.rs +++ b/common/src/proto/komp_ac.backup.rs @@ -71,6 +71,7 @@ pub enum OperationKind { Unspecified = 0, Backup = 1, Check = 2, + Dump = 3, } impl OperationKind { /// String value of the enum field names used in the ProtoBuf definition. @@ -82,6 +83,7 @@ impl OperationKind { Self::Unspecified => "OPERATION_KIND_UNSPECIFIED", Self::Backup => "OPERATION_KIND_BACKUP", Self::Check => "OPERATION_KIND_CHECK", + Self::Dump => "OPERATION_KIND_DUMP", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -90,6 +92,7 @@ impl OperationKind { "OPERATION_KIND_UNSPECIFIED" => Some(Self::Unspecified), "OPERATION_KIND_BACKUP" => Some(Self::Backup), "OPERATION_KIND_CHECK" => Some(Self::Check), + "OPERATION_KIND_DUMP" => Some(Self::Dump), _ => None, } } @@ -265,6 +268,30 @@ pub mod backup_service_client { .insert(GrpcMethod::new("komp_ac.backup.BackupService", "StartCheck")); self.inner.unary(req, path, codec).await } + pub async fn start_dump( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::unknown( + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic_prost::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/komp_ac.backup.BackupService/StartDump", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("komp_ac.backup.BackupService", "StartDump")); + self.inner.unary(req, path, codec).await + } pub async fn get_backup_info( &mut self, request: impl tonic::IntoRequest, @@ -346,6 +373,13 @@ pub mod backup_service_server { tonic::Response, tonic::Status, >; + async fn start_dump( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; async fn get_backup_info( &self, request: tonic::Request, @@ -527,6 +561,51 @@ pub mod backup_service_server { }; Box::pin(fut) } + "/komp_ac.backup.BackupService/StartDump" => { + #[allow(non_camel_case_types)] + struct StartDumpSvc(pub Arc); + impl< + T: BackupService, + > tonic::server::UnaryService + for StartDumpSvc { + type Response = super::BackupOperationResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::start_dump(&inner, request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = StartDumpSvc(inner); + let codec = tonic_prost::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/komp_ac.backup.BackupService/GetBackupInfo" => { #[allow(non_camel_case_types)] struct GetBackupInfoSvc(pub Arc);