n8n-nodes-proxmox
Version:
n8n community node for Proxmox Virtual Environment (VE) API integration with VM, container, storage, and cluster management capabilities
464 lines (463 loc) • 14 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.vmFields = exports.vmOperations = void 0;
const baseProperties_1 = require("./baseProperties");
exports.vmOperations = {
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['vm'],
},
},
options: [
{
name: 'Create',
value: 'create',
description: 'Create a new virtual machine',
action: 'Create a virtual machine',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete a virtual machine',
action: 'Delete a virtual machine',
},
{
name: 'Get',
value: 'get',
description: 'Get virtual machine details',
action: 'Get a virtual machine',
},
{
name: 'Get All',
value: 'getAll',
description: 'Get all virtual machines',
action: 'Get all virtual machines',
},
{
name: 'Start',
value: 'start',
description: 'Start a virtual machine',
action: 'Start a virtual machine',
},
{
name: 'Stop',
value: 'stop',
description: 'Stop a virtual machine',
action: 'Stop a virtual machine',
},
{
name: 'Shutdown',
value: 'shutdown',
description: 'Gracefully shutdown a virtual machine',
action: 'Shutdown a virtual machine',
},
{
name: 'Reboot',
value: 'reboot',
description: 'Reboot a virtual machine',
action: 'Reboot a virtual machine',
},
{
name: 'Suspend',
value: 'suspend',
description: 'Suspend a virtual machine',
action: 'Suspend a virtual machine',
},
{
name: 'Resume',
value: 'resume',
description: 'Resume a suspended virtual machine',
action: 'Resume a virtual machine',
},
{
name: 'Clone',
value: 'clone',
description: 'Clone a virtual machine',
action: 'Clone a virtual machine',
},
{
name: 'Migrate',
value: 'migrate',
description: 'Migrate a virtual machine to another node',
action: 'Migrate a virtual machine',
},
{
name: 'Create Snapshot',
value: 'snapshot',
description: 'Create a snapshot of the virtual machine',
action: 'Create VM snapshot',
},
{
name: 'Get Status',
value: 'getStatus',
description: 'Get current status of a virtual machine',
action: 'Get VM status',
},
],
default: 'getAll',
};
exports.vmFields = [
// 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: ['vm'],
operation: [
'create',
'delete',
'get',
'start',
'stop',
'shutdown',
'reboot',
'suspend',
'resume',
'clone',
'migrate',
'snapshot',
'getStatus',
],
},
},
},
{
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: ['vm'],
operation: [
'delete',
'get',
'start',
'stop',
'shutdown',
'reboot',
'suspend',
'resume',
'clone',
'migrate',
'snapshot',
'getStatus',
],
},
},
},
// Create VM specific fields
{
displayName: 'VM ID',
name: 'newVmId',
type: 'number',
required: true,
default: 100,
typeOptions: {
minValue: 100,
maxValue: 999999999,
},
description: 'Unique ID for the new virtual machine',
displayOptions: {
show: {
resource: ['vm'],
operation: ['create'],
},
},
},
{
displayName: 'VM Name',
name: 'vmName',
type: 'string',
required: true,
default: '',
placeholder: 'my-vm',
description: 'Name for the virtual machine',
displayOptions: {
show: {
resource: ['vm'],
operation: ['create'],
},
},
},
// Clone specific fields
{
displayName: 'New VM ID',
name: 'newVmId',
type: 'number',
required: true,
default: 101,
typeOptions: {
minValue: 100,
maxValue: 999999999,
},
description: 'ID for the cloned virtual machine',
displayOptions: {
show: {
resource: ['vm'],
operation: ['clone'],
},
},
},
{
displayName: 'Clone Name',
name: 'cloneName',
type: 'string',
default: '',
placeholder: 'cloned-vm',
description: 'Name for the cloned virtual machine',
displayOptions: {
show: {
resource: ['vm'],
operation: ['clone'],
},
},
},
// Migration fields
{
displayName: 'Target Node',
name: 'targetNode',
type: 'string',
required: true,
default: '',
placeholder: 'pve-node-02',
description: 'Target node for migration',
displayOptions: {
show: {
resource: ['vm'],
operation: ['migrate'],
},
},
},
// Snapshot fields
{
displayName: 'Snapshot Name',
name: 'snapshotName',
type: 'string',
required: true,
default: '',
placeholder: 'snapshot-1',
description: 'Name for the snapshot',
displayOptions: {
show: {
resource: ['vm'],
operation: ['snapshot'],
},
},
},
// 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: ['vm'],
operation: [
'create',
'delete',
'start',
'stop',
'shutdown',
'reboot',
'suspend',
'resume',
'clone',
'migrate',
'snapshot',
],
},
},
},
{
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: ['vm'],
operation: [
'create',
'delete',
'start',
'stop',
'shutdown',
'reboot',
'suspend',
'resume',
'clone',
'migrate',
'snapshot',
],
waitForTask: [true],
},
},
},
// Get All 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: ['vm'],
operation: ['getAll'],
},
},
},
{
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: ['vm'],
operation: ['getAll'],
returnAll: [false],
},
},
},
// Additional options for create and clone
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['vm'],
operation: ['create', 'clone'],
},
},
options: [
{
displayName: 'Memory (MB)',
name: 'memory',
type: 'number',
default: 1024,
typeOptions: {
minValue: 16,
},
description: 'Amount of RAM for the VM in MB',
},
{
displayName: 'CPU Cores',
name: 'cores',
type: 'number',
default: 1,
typeOptions: {
minValue: 1,
maxValue: 128,
},
description: 'Number of CPU cores',
},
{
displayName: 'CPU Sockets',
name: 'sockets',
type: 'number',
default: 1,
typeOptions: {
minValue: 1,
maxValue: 4,
},
description: 'Number of CPU sockets',
},
{
displayName: 'Disk Size (GB)',
name: 'diskSize',
type: 'string',
default: '32G',
description: 'Size of the primary disk (e.g., 32G, 100G)',
},
{
displayName: 'Storage',
name: 'storage',
type: 'string',
default: 'local-lvm',
description: 'Storage location for the VM disk',
},
{
displayName: 'Network Bridge',
name: 'bridge',
type: 'string',
default: 'vmbr0',
description: 'Network bridge to connect to',
},
{
displayName: 'Start After Create',
name: 'startAfterCreate',
type: 'boolean',
default: false,
description: 'Whether to start the VM after creation',
},
],
},
// Additional options for various operations
{
displayName: 'Additional Options',
name: 'additionalOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['vm'],
operation: ['stop', 'shutdown', 'migrate', 'snapshot'],
},
},
options: [
{
displayName: 'Force',
name: 'force',
type: 'boolean',
default: false,
description: 'Force the operation (use with caution)',
},
{
displayName: 'Skip Lock',
name: 'skipLock',
type: 'boolean',
default: false,
description: 'Skip VM lock check',
},
{
displayName: 'Include RAM',
name: 'includeRam',
type: 'boolean',
default: true,
description: 'Include RAM in snapshot (only for snapshot operation)',
},
{
displayName: 'Online Migration',
name: 'online',
type: 'boolean',
default: true,
description: 'Use online migration (only for migrate operation)',
},
],
},
];