n8n-nodes-proxmox
Version:
n8n community node for Proxmox Virtual Environment (VE) API integration with VM, container, storage, and cluster management capabilities
282 lines (281 loc) • 8.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.storageFields = exports.storageOperations = void 0;
const baseProperties_1 = require("./baseProperties");
exports.storageOperations = {
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',
};
exports.storageFields = [
// 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: 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: ['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: 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: ['storage'],
operation: ['getAll', 'getContent'],
},
},
},
{
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: ['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: '' } }],
},
},
},
],
},
];