n8n-nodes-proxmox
Version:
n8n community node for Proxmox Virtual Environment (VE) API integration with VM, container, storage, and cluster management capabilities
379 lines (378 loc) • 11.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.backupFields = exports.backupOperations = void 0;
const baseProperties_1 = require("./baseProperties");
exports.backupOperations = {
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['backup'],
},
},
options: [
{
name: 'Create',
value: 'create',
description: 'Create a backup of VM/Container',
action: 'Create backup',
},
{
name: 'Restore',
value: 'restore',
description: 'Restore VM/Container from backup',
action: 'Restore from backup',
},
{
name: 'Get All',
value: 'getAll',
description: 'Get all backups',
action: 'Get all backups',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete a backup file',
action: 'Delete backup',
},
{
name: 'Get Jobs',
value: 'getJobs',
description: 'Get backup jobs configuration',
action: 'Get backup jobs',
},
],
default: 'getAll',
};
exports.backupFields = [
// Common fields
{
displayName: baseProperties_1.nodeNameOption.displayName,
name: baseProperties_1.nodeNameOption.name,
type: baseProperties_1.nodeNameOption.type,
required: baseProperties_1.nodeNameOption.required,
default: baseProperties_1.nodeNameOption.default,
placeholder: baseProperties_1.nodeNameOption.placeholder,
description: baseProperties_1.nodeNameOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['create', 'restore', 'getAll', 'delete'],
},
},
},
// Create backup fields
{
displayName: baseProperties_1.vmIdOption.displayName,
name: baseProperties_1.vmIdOption.name,
type: baseProperties_1.vmIdOption.type,
required: baseProperties_1.vmIdOption.required,
default: baseProperties_1.vmIdOption.default,
typeOptions: baseProperties_1.vmIdOption.typeOptions,
description: baseProperties_1.vmIdOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['create'],
},
},
},
{
displayName: 'Storage',
name: 'storage',
type: 'string',
required: true,
default: 'local',
placeholder: 'local',
description: 'Storage location for the backup',
displayOptions: {
show: {
resource: ['backup'],
operation: ['create'],
},
},
},
// Restore fields
{
displayName: 'Backup File',
name: 'archive',
type: 'string',
required: true,
default: '',
placeholder: 'local:backup/vzdump-qemu-100-2023_01_01-12_00_00.tar.gz',
description: 'Full path to the backup file including storage prefix',
displayOptions: {
show: {
resource: ['backup'],
operation: ['restore'],
},
},
},
{
displayName: 'New VM/Container ID',
name: 'newVmId',
type: 'number',
required: true,
default: 100,
typeOptions: {
minValue: 100,
maxValue: 999999999,
},
description: 'ID for the restored VM/Container',
displayOptions: {
show: {
resource: ['backup'],
operation: ['restore'],
},
},
},
// Delete backup fields
{
displayName: 'Backup File',
name: 'backupFile',
type: 'string',
required: true,
default: '',
placeholder: 'backup/vzdump-qemu-100-2023_01_01-12_00_00.tar.gz',
description: 'Path to the backup file to delete',
displayOptions: {
show: {
resource: ['backup'],
operation: ['delete'],
},
},
},
{
displayName: 'Storage',
name: 'storage',
type: 'string',
required: true,
default: 'local',
placeholder: 'local',
description: 'Storage location of the backup file',
displayOptions: {
show: {
resource: ['backup'],
operation: ['delete'],
},
},
},
// Wait for task options
{
displayName: baseProperties_1.waitForTaskOption.displayName,
name: baseProperties_1.waitForTaskOption.name,
type: baseProperties_1.waitForTaskOption.type,
default: baseProperties_1.waitForTaskOption.default,
description: baseProperties_1.waitForTaskOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['create', 'restore'],
},
},
},
{
displayName: baseProperties_1.taskTimeoutOption.displayName,
name: baseProperties_1.taskTimeoutOption.name,
type: baseProperties_1.taskTimeoutOption.type,
default: baseProperties_1.taskTimeoutOption.default,
typeOptions: baseProperties_1.taskTimeoutOption.typeOptions,
description: baseProperties_1.taskTimeoutOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['create', 'restore'],
waitForTask: [true],
},
},
},
// Return all and limit options
{
displayName: baseProperties_1.returnAllOption.displayName,
name: baseProperties_1.returnAllOption.name,
type: baseProperties_1.returnAllOption.type,
default: baseProperties_1.returnAllOption.default,
description: baseProperties_1.returnAllOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['getAll', 'getJobs'],
},
},
},
{
displayName: baseProperties_1.limitOption.displayName,
name: baseProperties_1.limitOption.name,
type: baseProperties_1.limitOption.type,
typeOptions: baseProperties_1.limitOption.typeOptions,
default: baseProperties_1.limitOption.default,
description: baseProperties_1.limitOption.description,
displayOptions: {
show: {
resource: ['backup'],
operation: ['getAll', 'getJobs'],
returnAll: [false],
},
},
},
// Create backup options
{
displayName: 'Backup Options',
name: 'backupOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['backup'],
operation: ['create'],
},
},
options: [
{
displayName: 'Compression',
name: 'compress',
type: 'options',
options: [
{ name: 'None', value: '0' },
{ name: 'LZO', value: 'lzo' },
{ name: 'GZIP', value: 'gzip' },
{ name: 'ZSTD', value: 'zstd' },
],
default: 'zstd',
description: 'Compression algorithm for the backup',
},
{
displayName: 'Mode',
name: 'mode',
type: 'options',
options: [
{ name: 'Snapshot', value: 'snapshot' },
{ name: 'Suspend', value: 'suspend' },
{ name: 'Stop', value: 'stop' },
],
default: 'snapshot',
description: 'Backup mode',
},
{
displayName: 'Include RAM',
name: 'includeRam',
type: 'boolean',
default: false,
description: 'Include RAM in backup',
},
{
displayName: 'Mail Notification',
name: 'mailto',
type: 'string',
default: '',
placeholder: 'admin@example.com',
description: 'Email address for backup notifications',
},
{
displayName: 'Notes',
name: 'notes',
type: 'string',
default: '',
description: 'Notes for the backup',
},
{
displayName: 'Remove',
name: 'remove',
type: 'boolean',
default: true,
description: 'Remove the original backup file after successful restore',
},
],
},
// Restore options
{
displayName: 'Restore Options',
name: 'restoreOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['backup'],
operation: ['restore'],
},
},
options: [
{
displayName: 'Storage',
name: 'storage',
type: 'string',
default: 'local-lvm',
description: 'Storage location for restored VM/Container',
},
{
displayName: 'Force',
name: 'force',
type: 'boolean',
default: false,
description: 'Force restore even if VM/Container already exists',
},
{
displayName: 'Start After Restore',
name: 'start',
type: 'boolean',
default: false,
description: 'Start VM/Container after restore',
},
{
displayName: 'Unique',
name: 'unique',
type: 'boolean',
default: false,
description: 'Generate unique properties (MAC addresses, UUIDs)',
},
{
displayName: 'Bandwidth Limit (MB/s)',
name: 'bwlimit',
type: 'number',
default: 0,
typeOptions: {
minValue: 0,
},
description: 'Bandwidth limit for restore operation (0 = unlimited)',
},
],
},
// Get backups filter options
{
displayName: 'Filter Options',
name: 'filterOptions',
type: 'collection',
placeholder: 'Add Filter',
default: {},
displayOptions: {
show: {
resource: ['backup'],
operation: ['getAll'],
},
},
options: [
{
displayName: 'VM/Container ID',
name: 'vmid',
type: 'number',
default: '',
description: 'Filter backups by VM/Container ID',
},
{
displayName: 'Content Type',
name: 'content',
type: 'options',
options: [
{ name: 'All', value: '' },
{ name: 'Backups Only', value: 'backup' },
],
default: 'backup',
description: 'Filter by content type',
},
],
},
];