backupy-agent/packages/proto/gen/go/backupv1/agent_to_server.pb.go
TronoSfera 8b0c978337 feat(initial): Backupy agent + backupy-decrypt CLI
Source ports from the TronoSfera/backupy-cloud monorepo:
- apps/agent/        — Go agent (WSS client, persistent queue, Docker
                       discovery, 5 DB drivers: PG/MySQL/Mongo/Redis/SQLite,
                       pre/post hooks, Prometheus metrics)
- apps/backupy-decrypt/ — standalone CLI for client-side decryption
- packages/proto/    — protobuf wire format (generated .pb.go committed
                       so the repo builds without protoc)
- docs/              — agent spec + wire-protocol contract

Apache-2.0 license. Image published to ghcr.io/tronosfera/backupy-agent
on every v* tag via .github/workflows/release.yml (multi-arch amd64+arm64).
2026-05-17 20:22:35 +03:00

997 lines
32 KiB
Go

// Backupy protobuf v1 — see docs/07-api-contract.md
//
// Messages flowing from the agent to the server over the long-lived WSS
// connection. Each is wrapped in an Envelope (see envelope.proto).
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: backupv1/agent_to_server.proto
package backupv1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Register is the first message the agent sends after authenticating the
// WSS connection. The server replies with RegisterAck.
// See docs/07-api-contract.md §4 (Register).
type Register struct {
state protoimpl.MessageState `protogen:"open.v1"`
AgentVersion string `protobuf:"bytes,1,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"`
Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
Os string `protobuf:"bytes,3,opt,name=os,proto3" json:"os,omitempty"` // "linux"
Arch string `protobuf:"bytes,4,opt,name=arch,proto3" json:"arch,omitempty"` // "amd64"
DockerVersion string `protobuf:"bytes,5,opt,name=docker_version,json=dockerVersion,proto3" json:"docker_version,omitempty"`
Capabilities []string `protobuf:"bytes,6,rep,name=capabilities,proto3" json:"capabilities,omitempty"` // ["pg_dump", "mysqldump", "docker_discovery"]
LastKnownConfigVersion uint64 `protobuf:"varint,7,opt,name=last_known_config_version,json=lastKnownConfigVersion,proto3" json:"last_known_config_version,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Register) Reset() {
*x = Register{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Register) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Register) ProtoMessage() {}
func (x *Register) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Register.ProtoReflect.Descriptor instead.
func (*Register) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{0}
}
func (x *Register) GetAgentVersion() string {
if x != nil {
return x.AgentVersion
}
return ""
}
func (x *Register) GetHostname() string {
if x != nil {
return x.Hostname
}
return ""
}
func (x *Register) GetOs() string {
if x != nil {
return x.Os
}
return ""
}
func (x *Register) GetArch() string {
if x != nil {
return x.Arch
}
return ""
}
func (x *Register) GetDockerVersion() string {
if x != nil {
return x.DockerVersion
}
return ""
}
func (x *Register) GetCapabilities() []string {
if x != nil {
return x.Capabilities
}
return nil
}
func (x *Register) GetLastKnownConfigVersion() uint64 {
if x != nil {
return x.LastKnownConfigVersion
}
return 0
}
// Heartbeat is sent every heartbeat_interval_sec (default 30s).
// See docs/07-api-contract.md §4 (Heartbeat).
type Heartbeat struct {
state protoimpl.MessageState `protogen:"open.v1"`
ConfigVersion uint64 `protobuf:"varint,1,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"`
Metrics *AgentMetrics `protobuf:"bytes,2,opt,name=metrics,proto3" json:"metrics,omitempty"`
ActiveJobIds []string `protobuf:"bytes,3,rep,name=active_job_ids,json=activeJobIds,proto3" json:"active_job_ids,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Heartbeat) Reset() {
*x = Heartbeat{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Heartbeat) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Heartbeat) ProtoMessage() {}
func (x *Heartbeat) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Heartbeat.ProtoReflect.Descriptor instead.
func (*Heartbeat) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{1}
}
func (x *Heartbeat) GetConfigVersion() uint64 {
if x != nil {
return x.ConfigVersion
}
return 0
}
func (x *Heartbeat) GetMetrics() *AgentMetrics {
if x != nil {
return x.Metrics
}
return nil
}
func (x *Heartbeat) GetActiveJobIds() []string {
if x != nil {
return x.ActiveJobIds
}
return nil
}
// DiscoveryReport is sent on startup and whenever docker events change the set
// of running containers. See docs/07-api-contract.md §4 (DiscoveryReport).
type DiscoveryReport struct {
state protoimpl.MessageState `protogen:"open.v1"`
Containers []*DiscoveredContainer `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DiscoveryReport) Reset() {
*x = DiscoveryReport{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DiscoveryReport) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DiscoveryReport) ProtoMessage() {}
func (x *DiscoveryReport) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DiscoveryReport.ProtoReflect.Descriptor instead.
func (*DiscoveryReport) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{2}
}
func (x *DiscoveryReport) GetContainers() []*DiscoveredContainer {
if x != nil {
return x.Containers
}
return nil
}
type DiscoveredContainer struct {
state protoimpl.MessageState `protogen:"open.v1"`
ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Image string `protobuf:"bytes,3,opt,name=image,proto3" json:"image,omitempty"` // "postgres:16"
DetectedDbType string `protobuf:"bytes,4,opt,name=detected_db_type,json=detectedDbType,proto3" json:"detected_db_type,omitempty"` // "postgresql"
Networks []string `protobuf:"bytes,5,rep,name=networks,proto3" json:"networks,omitempty"`
EnvHints map[string]string `protobuf:"bytes,6,rep,name=env_hints,json=envHints,proto3" json:"env_hints,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // env vars filtered to remove secrets
Ports []*PortBinding `protobuf:"bytes,7,rep,name=ports,proto3" json:"ports,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DiscoveredContainer) Reset() {
*x = DiscoveredContainer{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DiscoveredContainer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DiscoveredContainer) ProtoMessage() {}
func (x *DiscoveredContainer) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DiscoveredContainer.ProtoReflect.Descriptor instead.
func (*DiscoveredContainer) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{3}
}
func (x *DiscoveredContainer) GetContainerId() string {
if x != nil {
return x.ContainerId
}
return ""
}
func (x *DiscoveredContainer) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DiscoveredContainer) GetImage() string {
if x != nil {
return x.Image
}
return ""
}
func (x *DiscoveredContainer) GetDetectedDbType() string {
if x != nil {
return x.DetectedDbType
}
return ""
}
func (x *DiscoveredContainer) GetNetworks() []string {
if x != nil {
return x.Networks
}
return nil
}
func (x *DiscoveredContainer) GetEnvHints() map[string]string {
if x != nil {
return x.EnvHints
}
return nil
}
func (x *DiscoveredContainer) GetPorts() []*PortBinding {
if x != nil {
return x.Ports
}
return nil
}
// JobUpdate is a progress tick for a running backup job.
// See docs/07-api-contract.md §4 (JobUpdate).
//
// run_id was appended (field 6) after the initial Phase-1 wire so the
// scheduler can correlate a tick to a specific BackupRun row. Older
// agents that omit it are tolerated as "job-level" updates (no run row
// transition).
type JobUpdate struct {
state protoimpl.MessageState `protogen:"open.v1"`
JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
Status JobStatus `protobuf:"varint,2,opt,name=status,proto3,enum=backup.v1.JobStatus" json:"status,omitempty"`
ProgressPercent uint32 `protobuf:"varint,3,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
CurrentStep string `protobuf:"bytes,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"` // "dumping", "compressing", "uploading"
ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // populated when status == FAILED
RunId string `protobuf:"bytes,6,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"` // correlates to BackupRun.id; appended in v1.1
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *JobUpdate) Reset() {
*x = JobUpdate{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *JobUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*JobUpdate) ProtoMessage() {}
func (x *JobUpdate) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use JobUpdate.ProtoReflect.Descriptor instead.
func (*JobUpdate) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{4}
}
func (x *JobUpdate) GetJobId() string {
if x != nil {
return x.JobId
}
return ""
}
func (x *JobUpdate) GetStatus() JobStatus {
if x != nil {
return x.Status
}
return JobStatus_JOB_STATUS_UNSPECIFIED
}
func (x *JobUpdate) GetProgressPercent() uint32 {
if x != nil {
return x.ProgressPercent
}
return 0
}
func (x *JobUpdate) GetCurrentStep() string {
if x != nil {
return x.CurrentStep
}
return ""
}
func (x *JobUpdate) GetErrorMessage() string {
if x != nil {
return x.ErrorMessage
}
return ""
}
func (x *JobUpdate) GetRunId() string {
if x != nil {
return x.RunId
}
return ""
}
// BackupCompleted is sent once after a successful S3 upload, carrying the
// metadata the server needs to persist a backup_runs row.
// See docs/07-api-contract.md §4 (BackupCompleted).
type BackupCompleted struct {
state protoimpl.MessageState `protogen:"open.v1"`
JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
RunId string `protobuf:"bytes,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
S3Key string `protobuf:"bytes,3,opt,name=s3_key,json=s3Key,proto3" json:"s3_key,omitempty"`
SizeBytes uint64 `protobuf:"varint,4,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
Sha256 string `protobuf:"bytes,5,opt,name=sha256,proto3" json:"sha256,omitempty"`
DurationMs uint64 `protobuf:"varint,6,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
DekKmsId string `protobuf:"bytes,7,opt,name=dek_kms_id,json=dekKmsId,proto3" json:"dek_kms_id,omitempty"`
EncryptedDek []byte `protobuf:"bytes,8,opt,name=encrypted_dek,json=encryptedDek,proto3" json:"encrypted_dek,omitempty"`
Compression string `protobuf:"bytes,9,opt,name=compression,proto3" json:"compression,omitempty"` // "zstd"
DbEngineVersion string `protobuf:"bytes,10,opt,name=db_engine_version,json=dbEngineVersion,proto3" json:"db_engine_version,omitempty"` // "PostgreSQL 16.2"
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *BackupCompleted) Reset() {
*x = BackupCompleted{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BackupCompleted) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BackupCompleted) ProtoMessage() {}
func (x *BackupCompleted) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BackupCompleted.ProtoReflect.Descriptor instead.
func (*BackupCompleted) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{5}
}
func (x *BackupCompleted) GetJobId() string {
if x != nil {
return x.JobId
}
return ""
}
func (x *BackupCompleted) GetRunId() string {
if x != nil {
return x.RunId
}
return ""
}
func (x *BackupCompleted) GetS3Key() string {
if x != nil {
return x.S3Key
}
return ""
}
func (x *BackupCompleted) GetSizeBytes() uint64 {
if x != nil {
return x.SizeBytes
}
return 0
}
func (x *BackupCompleted) GetSha256() string {
if x != nil {
return x.Sha256
}
return ""
}
func (x *BackupCompleted) GetDurationMs() uint64 {
if x != nil {
return x.DurationMs
}
return 0
}
func (x *BackupCompleted) GetDekKmsId() string {
if x != nil {
return x.DekKmsId
}
return ""
}
func (x *BackupCompleted) GetEncryptedDek() []byte {
if x != nil {
return x.EncryptedDek
}
return nil
}
func (x *BackupCompleted) GetCompression() string {
if x != nil {
return x.Compression
}
return ""
}
func (x *BackupCompleted) GetDbEngineVersion() string {
if x != nil {
return x.DbEngineVersion
}
return ""
}
// HealthCheckResult is the outcome of a single probe run.
// See docs/07-api-contract.md §4 (HealthCheckResult).
type HealthCheckResult struct {
state protoimpl.MessageState `protogen:"open.v1"`
CheckId string `protobuf:"bytes,1,opt,name=check_id,json=checkId,proto3" json:"check_id,omitempty"`
TsMs uint64 `protobuf:"varint,2,opt,name=ts_ms,json=tsMs,proto3" json:"ts_ms,omitempty"`
Ok bool `protobuf:"varint,3,opt,name=ok,proto3" json:"ok,omitempty"`
LatencyMs uint32 `protobuf:"varint,4,opt,name=latency_ms,json=latencyMs,proto3" json:"latency_ms,omitempty"`
Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
StatusCode uint32 `protobuf:"varint,6,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` // populated for HTTP/HTTPS probes
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *HealthCheckResult) Reset() {
*x = HealthCheckResult{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *HealthCheckResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HealthCheckResult) ProtoMessage() {}
func (x *HealthCheckResult) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use HealthCheckResult.ProtoReflect.Descriptor instead.
func (*HealthCheckResult) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{6}
}
func (x *HealthCheckResult) GetCheckId() string {
if x != nil {
return x.CheckId
}
return ""
}
func (x *HealthCheckResult) GetTsMs() uint64 {
if x != nil {
return x.TsMs
}
return 0
}
func (x *HealthCheckResult) GetOk() bool {
if x != nil {
return x.Ok
}
return false
}
func (x *HealthCheckResult) GetLatencyMs() uint32 {
if x != nil {
return x.LatencyMs
}
return 0
}
func (x *HealthCheckResult) GetError() string {
if x != nil {
return x.Error
}
return ""
}
func (x *HealthCheckResult) GetStatusCode() uint32 {
if x != nil {
return x.StatusCode
}
return 0
}
// LogEvent is a structured log line streamed from the agent.
// See docs/07-api-contract.md §4 (LogEvent).
type LogEvent struct {
state protoimpl.MessageState `protogen:"open.v1"`
TsMs uint64 `protobuf:"varint,1,opt,name=ts_ms,json=tsMs,proto3" json:"ts_ms,omitempty"`
Level LogLevel `protobuf:"varint,2,opt,name=level,proto3,enum=backup.v1.LogLevel" json:"level,omitempty"`
JobId string `protobuf:"bytes,3,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // optional
Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
Fields map[string]string `protobuf:"bytes,5,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *LogEvent) Reset() {
*x = LogEvent{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *LogEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LogEvent) ProtoMessage() {}
func (x *LogEvent) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use LogEvent.ProtoReflect.Descriptor instead.
func (*LogEvent) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{7}
}
func (x *LogEvent) GetTsMs() uint64 {
if x != nil {
return x.TsMs
}
return 0
}
func (x *LogEvent) GetLevel() LogLevel {
if x != nil {
return x.Level
}
return LogLevel_TRACE
}
func (x *LogEvent) GetJobId() string {
if x != nil {
return x.JobId
}
return ""
}
func (x *LogEvent) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
func (x *LogEvent) GetFields() map[string]string {
if x != nil {
return x.Fields
}
return nil
}
// RestoreUpdate is reserved for future agent-driven restore flows. In MVP the
// agent never receives a RunRestore command — restore happens through the REST
// download endpoint and the local backupy-decrypt CLI. Kept in the contract so
// the field number is stable for Phase 3.
// See docs/07-api-contract.md §4 (RestoreUpdate).
type RestoreUpdate struct {
state protoimpl.MessageState `protogen:"open.v1"`
RestoreId string `protobuf:"bytes,1,opt,name=restore_id,json=restoreId,proto3" json:"restore_id,omitempty"`
Status JobStatus `protobuf:"varint,2,opt,name=status,proto3,enum=backup.v1.JobStatus" json:"status,omitempty"`
ProgressPercent uint32 `protobuf:"varint,3,opt,name=progress_percent,json=progressPercent,proto3" json:"progress_percent,omitempty"`
CurrentStep string `protobuf:"bytes,4,opt,name=current_step,json=currentStep,proto3" json:"current_step,omitempty"`
ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RestoreUpdate) Reset() {
*x = RestoreUpdate{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RestoreUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RestoreUpdate) ProtoMessage() {}
func (x *RestoreUpdate) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RestoreUpdate.ProtoReflect.Descriptor instead.
func (*RestoreUpdate) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{8}
}
func (x *RestoreUpdate) GetRestoreId() string {
if x != nil {
return x.RestoreId
}
return ""
}
func (x *RestoreUpdate) GetStatus() JobStatus {
if x != nil {
return x.Status
}
return JobStatus_JOB_STATUS_UNSPECIFIED
}
func (x *RestoreUpdate) GetProgressPercent() uint32 {
if x != nil {
return x.ProgressPercent
}
return 0
}
func (x *RestoreUpdate) GetCurrentStep() string {
if x != nil {
return x.CurrentStep
}
return ""
}
func (x *RestoreUpdate) GetErrorMessage() string {
if x != nil {
return x.ErrorMessage
}
return ""
}
// Ack responds to a server message identified by correlation_id.
// See docs/07-api-contract.md §4 (Ack).
type Ack struct {
state protoimpl.MessageState `protogen:"open.v1"`
CorrelationId string `protobuf:"bytes,1,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"`
Accepted bool `protobuf:"varint,2,opt,name=accepted,proto3" json:"accepted,omitempty"`
Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // populated when accepted == false
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Ack) Reset() {
*x = Ack{}
mi := &file_backupv1_agent_to_server_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Ack) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Ack) ProtoMessage() {}
func (x *Ack) ProtoReflect() protoreflect.Message {
mi := &file_backupv1_agent_to_server_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Ack.ProtoReflect.Descriptor instead.
func (*Ack) Descriptor() ([]byte, []int) {
return file_backupv1_agent_to_server_proto_rawDescGZIP(), []int{9}
}
func (x *Ack) GetCorrelationId() string {
if x != nil {
return x.CorrelationId
}
return ""
}
func (x *Ack) GetAccepted() bool {
if x != nil {
return x.Accepted
}
return false
}
func (x *Ack) GetReason() string {
if x != nil {
return x.Reason
}
return ""
}
var File_backupv1_agent_to_server_proto protoreflect.FileDescriptor
const file_backupv1_agent_to_server_proto_rawDesc = "" +
"\n" +
"\x1ebackupv1/agent_to_server.proto\x12\tbackup.v1\x1a\x15backupv1/common.proto\"\xf5\x01\n" +
"\bRegister\x12#\n" +
"\ragent_version\x18\x01 \x01(\tR\fagentVersion\x12\x1a\n" +
"\bhostname\x18\x02 \x01(\tR\bhostname\x12\x0e\n" +
"\x02os\x18\x03 \x01(\tR\x02os\x12\x12\n" +
"\x04arch\x18\x04 \x01(\tR\x04arch\x12%\n" +
"\x0edocker_version\x18\x05 \x01(\tR\rdockerVersion\x12\"\n" +
"\fcapabilities\x18\x06 \x03(\tR\fcapabilities\x129\n" +
"\x19last_known_config_version\x18\a \x01(\x04R\x16lastKnownConfigVersion\"\x8b\x01\n" +
"\tHeartbeat\x12%\n" +
"\x0econfig_version\x18\x01 \x01(\x04R\rconfigVersion\x121\n" +
"\ametrics\x18\x02 \x01(\v2\x17.backup.v1.AgentMetricsR\ametrics\x12$\n" +
"\x0eactive_job_ids\x18\x03 \x03(\tR\factiveJobIds\"Q\n" +
"\x0fDiscoveryReport\x12>\n" +
"\n" +
"containers\x18\x01 \x03(\v2\x1e.backup.v1.DiscoveredContainerR\n" +
"containers\"\xde\x02\n" +
"\x13DiscoveredContainer\x12!\n" +
"\fcontainer_id\x18\x01 \x01(\tR\vcontainerId\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x14\n" +
"\x05image\x18\x03 \x01(\tR\x05image\x12(\n" +
"\x10detected_db_type\x18\x04 \x01(\tR\x0edetectedDbType\x12\x1a\n" +
"\bnetworks\x18\x05 \x03(\tR\bnetworks\x12I\n" +
"\tenv_hints\x18\x06 \x03(\v2,.backup.v1.DiscoveredContainer.EnvHintsEntryR\benvHints\x12,\n" +
"\x05ports\x18\a \x03(\v2\x16.backup.v1.PortBindingR\x05ports\x1a;\n" +
"\rEnvHintsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xda\x01\n" +
"\tJobUpdate\x12\x15\n" +
"\x06job_id\x18\x01 \x01(\tR\x05jobId\x12,\n" +
"\x06status\x18\x02 \x01(\x0e2\x14.backup.v1.JobStatusR\x06status\x12)\n" +
"\x10progress_percent\x18\x03 \x01(\rR\x0fprogressPercent\x12!\n" +
"\fcurrent_step\x18\x04 \x01(\tR\vcurrentStep\x12#\n" +
"\rerror_message\x18\x05 \x01(\tR\ferrorMessage\x12\x15\n" +
"\x06run_id\x18\x06 \x01(\tR\x05runId\"\xbf\x02\n" +
"\x0fBackupCompleted\x12\x15\n" +
"\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x15\n" +
"\x06run_id\x18\x02 \x01(\tR\x05runId\x12\x15\n" +
"\x06s3_key\x18\x03 \x01(\tR\x05s3Key\x12\x1d\n" +
"\n" +
"size_bytes\x18\x04 \x01(\x04R\tsizeBytes\x12\x16\n" +
"\x06sha256\x18\x05 \x01(\tR\x06sha256\x12\x1f\n" +
"\vduration_ms\x18\x06 \x01(\x04R\n" +
"durationMs\x12\x1c\n" +
"\n" +
"dek_kms_id\x18\a \x01(\tR\bdekKmsId\x12#\n" +
"\rencrypted_dek\x18\b \x01(\fR\fencryptedDek\x12 \n" +
"\vcompression\x18\t \x01(\tR\vcompression\x12*\n" +
"\x11db_engine_version\x18\n" +
" \x01(\tR\x0fdbEngineVersion\"\xa9\x01\n" +
"\x11HealthCheckResult\x12\x19\n" +
"\bcheck_id\x18\x01 \x01(\tR\acheckId\x12\x13\n" +
"\x05ts_ms\x18\x02 \x01(\x04R\x04tsMs\x12\x0e\n" +
"\x02ok\x18\x03 \x01(\bR\x02ok\x12\x1d\n" +
"\n" +
"latency_ms\x18\x04 \x01(\rR\tlatencyMs\x12\x14\n" +
"\x05error\x18\x05 \x01(\tR\x05error\x12\x1f\n" +
"\vstatus_code\x18\x06 \x01(\rR\n" +
"statusCode\"\xef\x01\n" +
"\bLogEvent\x12\x13\n" +
"\x05ts_ms\x18\x01 \x01(\x04R\x04tsMs\x12)\n" +
"\x05level\x18\x02 \x01(\x0e2\x13.backup.v1.LogLevelR\x05level\x12\x15\n" +
"\x06job_id\x18\x03 \x01(\tR\x05jobId\x12\x18\n" +
"\amessage\x18\x04 \x01(\tR\amessage\x127\n" +
"\x06fields\x18\x05 \x03(\v2\x1f.backup.v1.LogEvent.FieldsEntryR\x06fields\x1a9\n" +
"\vFieldsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xcf\x01\n" +
"\rRestoreUpdate\x12\x1d\n" +
"\n" +
"restore_id\x18\x01 \x01(\tR\trestoreId\x12,\n" +
"\x06status\x18\x02 \x01(\x0e2\x14.backup.v1.JobStatusR\x06status\x12)\n" +
"\x10progress_percent\x18\x03 \x01(\rR\x0fprogressPercent\x12!\n" +
"\fcurrent_step\x18\x04 \x01(\tR\vcurrentStep\x12#\n" +
"\rerror_message\x18\x05 \x01(\tR\ferrorMessage\"`\n" +
"\x03Ack\x12%\n" +
"\x0ecorrelation_id\x18\x01 \x01(\tR\rcorrelationId\x12\x1a\n" +
"\baccepted\x18\x02 \x01(\bR\baccepted\x12\x16\n" +
"\x06reason\x18\x03 \x01(\tR\x06reasonB\xac\x01\n" +
"\rcom.backup.v1B\x12AgentToServerProtoP\x01ZBgithub.com/backupy/backupy/packages/proto/gen/go/backupv1;backupv1\xa2\x02\x03BXX\xaa\x02\tBackup.V1\xca\x02\tBackup\\V1\xe2\x02\x15Backup\\V1\\GPBMetadata\xea\x02\n" +
"Backup::V1b\x06proto3"
var (
file_backupv1_agent_to_server_proto_rawDescOnce sync.Once
file_backupv1_agent_to_server_proto_rawDescData []byte
)
func file_backupv1_agent_to_server_proto_rawDescGZIP() []byte {
file_backupv1_agent_to_server_proto_rawDescOnce.Do(func() {
file_backupv1_agent_to_server_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_backupv1_agent_to_server_proto_rawDesc), len(file_backupv1_agent_to_server_proto_rawDesc)))
})
return file_backupv1_agent_to_server_proto_rawDescData
}
var file_backupv1_agent_to_server_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_backupv1_agent_to_server_proto_goTypes = []any{
(*Register)(nil), // 0: backup.v1.Register
(*Heartbeat)(nil), // 1: backup.v1.Heartbeat
(*DiscoveryReport)(nil), // 2: backup.v1.DiscoveryReport
(*DiscoveredContainer)(nil), // 3: backup.v1.DiscoveredContainer
(*JobUpdate)(nil), // 4: backup.v1.JobUpdate
(*BackupCompleted)(nil), // 5: backup.v1.BackupCompleted
(*HealthCheckResult)(nil), // 6: backup.v1.HealthCheckResult
(*LogEvent)(nil), // 7: backup.v1.LogEvent
(*RestoreUpdate)(nil), // 8: backup.v1.RestoreUpdate
(*Ack)(nil), // 9: backup.v1.Ack
nil, // 10: backup.v1.DiscoveredContainer.EnvHintsEntry
nil, // 11: backup.v1.LogEvent.FieldsEntry
(*AgentMetrics)(nil), // 12: backup.v1.AgentMetrics
(*PortBinding)(nil), // 13: backup.v1.PortBinding
(JobStatus)(0), // 14: backup.v1.JobStatus
(LogLevel)(0), // 15: backup.v1.LogLevel
}
var file_backupv1_agent_to_server_proto_depIdxs = []int32{
12, // 0: backup.v1.Heartbeat.metrics:type_name -> backup.v1.AgentMetrics
3, // 1: backup.v1.DiscoveryReport.containers:type_name -> backup.v1.DiscoveredContainer
10, // 2: backup.v1.DiscoveredContainer.env_hints:type_name -> backup.v1.DiscoveredContainer.EnvHintsEntry
13, // 3: backup.v1.DiscoveredContainer.ports:type_name -> backup.v1.PortBinding
14, // 4: backup.v1.JobUpdate.status:type_name -> backup.v1.JobStatus
15, // 5: backup.v1.LogEvent.level:type_name -> backup.v1.LogLevel
11, // 6: backup.v1.LogEvent.fields:type_name -> backup.v1.LogEvent.FieldsEntry
14, // 7: backup.v1.RestoreUpdate.status:type_name -> backup.v1.JobStatus
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
}
func init() { file_backupv1_agent_to_server_proto_init() }
func file_backupv1_agent_to_server_proto_init() {
if File_backupv1_agent_to_server_proto != nil {
return
}
file_backupv1_common_proto_init()
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_backupv1_agent_to_server_proto_rawDesc), len(file_backupv1_agent_to_server_proto_rawDesc)),
NumEnums: 0,
NumMessages: 12,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_backupv1_agent_to_server_proto_goTypes,
DependencyIndexes: file_backupv1_agent_to_server_proto_depIdxs,
MessageInfos: file_backupv1_agent_to_server_proto_msgTypes,
}.Build()
File_backupv1_agent_to_server_proto = out.File
file_backupv1_agent_to_server_proto_goTypes = nil
file_backupv1_agent_to_server_proto_depIdxs = nil
}