mirror of
https://github.com/TronoSfera/backupy-agent.git
synced 2026-05-18 10:03:30 +03:00
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).
997 lines
32 KiB
Go
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
|
|
}
|