Skip to content

Commit

Permalink
Basic backup logic (#133)
Browse files Browse the repository at this point in the history
  • Loading branch information
Pivnoy committed Mar 17, 2024
1 parent 6a14f51 commit 893e647
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
13 changes: 13 additions & 0 deletions nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,3 +276,16 @@ func (n *Node) GetCustomCertificates(ctx context.Context) (certs *NodeCertificat
err = n.client.Get(ctx, fmt.Sprintf("/nodes/%s/certificates/info", n.Name), &certs)
return
}

func (n *Node) Vzdump(ctx context.Context, params *VirtualMachineBackupOptions) (task *Task, err error) {
var upid UPID

if params == nil {
params = &VirtualMachineBackupOptions{}
}

if err = n.client.Post(ctx, fmt.Sprintf("/nodes/%s/vzdump", n.Name), params, &upid); err != nil {
return nil, err
}
return NewTask(upid, n.client), nil
}
55 changes: 55 additions & 0 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -1242,3 +1242,58 @@ type FirewallIPSet struct {
Digest string `json:"digest,omitempty"`
Comment string `json:"comment,omitempty"`
}

type (
VirtualMachineBackupMode = string
VirtualMachineBackupCompress = string
VirtualMachineBackupNotificationPolicy = string
)

const (
VirtualMachineBackupModeSnapshot = VirtualMachineBackupMode("snapshot")
VirtualMachineBackupModeSuspend = VirtualMachineBackupMode("suspend")
VirtualMachineBackupModeStop = VirtualMachineBackupMode("stop")

VirtualMachineBackupCompressZero = VirtualMachineBackupCompress("0")
VirtualMachineBackupCompressOne = VirtualMachineBackupCompress("1")
VirtualMachineBackupCompressGzip = VirtualMachineBackupCompress("gzip")
VirtualMachineBackupCompressLzo = VirtualMachineBackupCompress("lzo")
VirtualMachineBackupCompressZstd = VirtualMachineBackupCompress("zstd")

VirtualMachineBackupNotificationPolicyAlways = VirtualMachineBackupNotificationPolicy("always")
VirtualMachineBackupNotificationPolicyFailure = VirtualMachineBackupNotificationPolicy("failure")
VirtualMachineBackupNotificationPolicyNever = VirtualMachineBackupNotificationPolicy("never")
)

type VirtualMachineBackupOptions struct {
All bool `json:"all,omitempty"`
BwLimit uint `json:"bwlimit,omitempty"`
Compress VirtualMachineBackupCompress `json:"compress,omitempty"`
DumpDir string `json:"dumpDir,omitempty"`
Exclude string `json:"exclude,omitempty"`
ExcludePath []string `json:"exclude-path,omitempty"`
IoNice uint `json:"ionice,omitempty"`
LockWait uint `json:"lockwait,omitempty"`
MailTo string `json:"mailto,omitempty"`
Mode VirtualMachineBackupMode `json:"mode,omitempty"`
Node string `json:"node,omitempty"`
NotesTemplate string `json:"notes-template,omitempty"`
NotificationPolicy VirtualMachineBackupNotificationPolicy `json:"notification-policy,omitempty"`
NotificationTarget string `json:"notification-target,omitempty"`
Performance string `json:"performance,omitempty"`
Pigz int `json:"pigz,omitempty"`
Pool string `json:"pool,omitempty"`
Protected string `json:"protected,omitempty"`
PruneBackups string `json:"prune-backups,omitempty"`
Quiet bool `json:"quiet,omitempty"`
Remove bool `json:"remove,omitempty"`
Script string `json:"script,omitempty"`
StdExcludes bool `json:"stdexcludes,omitempty"`
StdOut bool `json:"stdout,omitempty"`
Stop bool `json:"stop,omitempty"`
StopWait uint `json:"stopwait,omitempty"`
Storage string `json:"storage,omitempty"`
TmpDir string `json:"tmpdir,omitempty"`
VMID uint64 `json:"vmid,omitempty"`
Zstd uint `json:"zstd,omitempty"`
}

0 comments on commit 893e647

Please sign in to comment.