Class: Pvectl::Repositories::Backup
- Defined in:
- lib/pvectl/repositories/backup.rb
Overview
Repository for backup operations in Proxmox.
Handles listing, creating, deleting, and restoring backups via the Proxmox API (vzdump).
Instance Method Summary collapse
-
#create(vmid, node, storage:, mode: "snapshot", compress: "zstd", notes: nil, protected: false) ⇒ String
Creates a backup using vzdump.
-
#delete(volid, node) ⇒ String?
Deletes a backup.
-
#list(vmid: nil, storage: nil, node: nil) ⇒ Array<Models::Backup>
Lists backups from storage.
-
#restore(volid, node, vmid:, storage: nil, force: false, start: false, unique: false) ⇒ String
Restores a backup to a new or existing VM/container.
Methods inherited from Base
Constructor Details
This class inherits a constructor from Pvectl::Repositories::Base
Instance Method Details
#create(vmid, node, storage:, mode: "snapshot", compress: "zstd", notes: nil, protected: false) ⇒ String
Creates a backup using vzdump.
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/pvectl/repositories/backup.rb', line 59 def create(vmid, node, storage:, mode: "snapshot", compress: "zstd", notes: nil, protected: false) params = { vmid: vmid, storage: storage, mode: mode, compress: compress } params[:notes] = notes if notes params[:protected] = 1 if protected connection.client["nodes/#{node}/vzdump"].post(params) end |
#delete(volid, node) ⇒ String?
Deletes a backup.
77 78 79 80 81 |
# File 'lib/pvectl/repositories/backup.rb', line 77 def delete(volid, node) storage = parse_storage(volid) encoded_volid = ERB::Util.url_encode(volid) connection.client["nodes/#{node}/storage/#{storage}/content/#{encoded_volid}"].delete end |
#list(vmid: nil, storage: nil, node: nil) ⇒ Array<Models::Backup>
Lists backups from storage.
When node and storage are not specified, discovers all nodes and backup-capable storages automatically.
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/pvectl/repositories/backup.rb', line 35 def list(vmid: nil, storage: nil, node: nil) nodes = node ? [node] : list_nodes storages_by_node = storage ? Hash[nodes.map { |n| [n, [storage]] }] : nil backups = [] nodes.each do |n| backup_storages = storages_by_node ? storages_by_node[n] : list_backup_storages(n) backup_storages.each do |s| backups.concat(list_from_storage(n, s, vmid: vmid)) end end backups end |
#restore(volid, node, vmid:, storage: nil, force: false, start: false, unique: false) ⇒ String
Restores a backup to a new or existing VM/container.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/pvectl/repositories/backup.rb', line 93 def restore(volid, node, vmid:, storage: nil, force: false, start: false, unique: false) resource_type = detect_type_from_volid(volid) endpoint = resource_type == :lxc ? "lxc" : "qemu" params = { archive: volid, vmid: vmid } params[:storage] = storage if storage params[:force] = 1 if force params[:start] = 1 if start params[:unique] = 1 if unique connection.client["nodes/#{node}/#{endpoint}"].post(params) end |