UNPKG

n8n-nodes-proxmox

Version:

n8n community node for Proxmox Virtual Environment (VE) API integration with VM, container, storage, and cluster management capabilities

289 lines (279 loc) 6.3 kB
import { INodeProperties } from 'n8n-workflow'; import { nodeNameOption, returnAllOption, limitOption } from './baseProperties'; export const storageOperations: INodeProperties = { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['storage'], }, }, options: [ { name: 'Get All', value: 'getAll', description: 'Get all storage configurations', action: 'Get all storage', }, { name: 'Get', value: 'get', description: 'Get specific storage configuration', action: 'Get storage', }, { name: 'Get Content', value: 'getContent', description: 'Get storage content (images, ISOs, backups, etc.)', action: 'Get storage content', }, { name: 'Get Status', value: 'getStatus', description: 'Get storage status and usage', action: 'Get storage status', }, { name: 'Upload', value: 'upload', description: 'Upload file to storage', action: 'Upload to storage', }, { name: 'Delete File', value: 'deleteFile', description: 'Delete file from storage', action: 'Delete file from storage', }, ], default: 'getAll', }; export const storageFields: INodeProperties[] = [ // Storage ID field for specific operations { displayName: 'Storage ID', name: 'storageId', type: 'string', required: true, default: '', placeholder: 'local-lvm', description: 'ID of the storage', displayOptions: { show: { resource: ['storage'], operation: ['get', 'getContent', 'getStatus', 'upload', 'deleteFile'], }, }, }, // Node name for node-specific storage operations { displayName: nodeNameOption.displayName, name: nodeNameOption.name, type: nodeNameOption.type, required: nodeNameOption.required, default: nodeNameOption.default, placeholder: nodeNameOption.placeholder, description: nodeNameOption.description, displayOptions: { show: { resource: ['storage'], operation: ['getContent', 'getStatus', 'upload', 'deleteFile'], }, }, }, // Content type filter { displayName: 'Content Type', name: 'contentType', type: 'options', options: [ { name: 'All', value: '' }, { name: 'Disk Images', value: 'images' }, { name: 'ISO Images', value: 'iso' }, { name: 'Container Templates', value: 'vztmpl' }, { name: 'Backups', value: 'backup' }, { name: 'Snippets', value: 'snippets' }, ], default: '', description: 'Filter content by type', displayOptions: { show: { resource: ['storage'], operation: ['getContent'], }, }, }, // File operations { displayName: 'File Path', name: 'filePath', type: 'string', required: true, default: '', placeholder: 'backup/vm-100-backup.tar.gz', description: 'Path to the file in storage', displayOptions: { show: { resource: ['storage'], operation: ['deleteFile'], }, }, }, // Upload specific fields { displayName: 'File Content', name: 'fileContent', type: 'string', required: true, default: '', description: 'Base64 encoded file content to upload', displayOptions: { show: { resource: ['storage'], operation: ['upload'], }, }, }, { displayName: 'File Name', name: 'fileName', type: 'string', required: true, default: '', placeholder: 'upload.iso', description: 'Name of the file to upload', displayOptions: { show: { resource: ['storage'], operation: ['upload'], }, }, }, // Return all and limit options { displayName: returnAllOption.displayName, name: returnAllOption.name, type: returnAllOption.type, default: returnAllOption.default, description: returnAllOption.description, displayOptions: { show: { resource: ['storage'], operation: ['getAll', 'getContent'], }, }, }, { displayName: limitOption.displayName, name: limitOption.name, type: limitOption.type, typeOptions: limitOption.typeOptions, default: limitOption.default, description: limitOption.description, displayOptions: { show: { resource: ['storage'], operation: ['getAll', 'getContent'], returnAll: [false], }, }, }, // Additional fields for various operations { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['storage'], operation: ['getContent', 'getAll'], }, }, options: [ { displayName: 'VM ID', name: 'vmid', type: 'number', default: '', description: 'Filter content by VM/Container ID', }, { displayName: 'Format', name: 'format', type: 'options', options: [ { name: 'All', value: '' }, { name: 'Raw', value: 'raw' }, { name: 'QCOW2', value: 'qcow2' }, { name: 'VMDK', value: 'vmdk' }, ], default: '', description: 'Filter by disk format', }, { displayName: 'Only Enabled', name: 'enabled', type: 'boolean', default: true, description: 'Show only enabled storage (for getAll operation)', }, ], }, // Upload options { displayName: 'Upload Options', name: 'uploadOptions', type: 'collection', placeholder: 'Add Option', default: {}, displayOptions: { show: { resource: ['storage'], operation: ['upload'], }, }, options: [ { displayName: 'Content Type', name: 'content', type: 'options', options: [ { name: 'ISO Image', value: 'iso' }, { name: 'Container Template', value: 'vztmpl' }, { name: 'Snippet', value: 'snippets' }, ], default: 'iso', description: 'Type of content being uploaded', }, { displayName: 'Check Hash', name: 'checksum', type: 'string', default: '', placeholder: 'sha256:abc123...', description: 'Expected checksum of the file (algorithm:hash)', }, { displayName: 'Check Hash Algorithm', name: 'checksum_algorithm', type: 'options', options: [ { name: 'SHA256', value: 'sha256' }, { name: 'SHA1', value: 'sha1' }, { name: 'MD5', value: 'md5' }, ], default: 'sha256', description: 'Algorithm used for checksum verification', displayOptions: { show: { checksum: [{ _cnd: { ne: '' } }], }, }, }, ], }, ];