UNPKG

n8n-nodes-librenms

Version:

n8n community node for LibreNMS network monitoring system integration with comprehensive device management and monitoring capabilities

778 lines (777 loc) 23.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.devicesFields = exports.devicesOperations = void 0; exports.devicesOperations = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['devices'], }, }, options: [ { name: 'Get All', value: 'getAll', description: 'Get all devices', action: 'Get all devices', routing: { request: { method: 'GET', url: '/devices', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'devices', }, }, ], }, }, }, { name: 'Get', value: 'get', description: 'Get a device', action: 'Get a device', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'devices', }, }, ], }, }, }, { name: 'Create', value: 'create', description: 'Add a new device', action: 'Create a device', routing: { request: { method: 'POST', url: '/devices', }, send: { type: 'body', }, }, }, { name: 'Update', value: 'update', description: 'Update a device field', action: 'Update a device', routing: { request: { method: 'PATCH', url: '=/devices/{{$parameter.deviceId}}', }, send: { type: 'body', }, }, }, { name: 'Delete', value: 'delete', description: 'Delete a device', action: 'Delete a device', routing: { request: { method: 'DELETE', url: '=/devices/{{$parameter.deviceId}}', }, }, }, { name: 'Discover', value: 'discover', description: 'Trigger device discovery', action: 'Discover a device', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/discover', }, }, }, { name: 'Get Availability', value: 'getAvailability', description: 'Get device availability statistics', action: 'Get device availability', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/availability', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'availability', }, }, ], }, }, }, { name: 'Get Outages', value: 'getOutages', description: 'Get device outages', action: 'Get device outages', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/outages', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'outages', }, }, ], }, }, }, { name: 'Set Maintenance', value: 'setMaintenance', description: 'Set device into maintenance mode', action: 'Set device maintenance', routing: { request: { method: 'POST', url: '=/devices/{{$parameter.deviceId}}/maintenance', }, send: { type: 'body', }, }, }, { name: 'Get Maintenance Status', value: 'getMaintenanceStatus', description: 'Check if device is under maintenance', action: 'Get device maintenance status', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/maintenance', }, }, }, { name: 'Rename', value: 'rename', description: 'Rename a device', action: 'Rename a device', routing: { request: { method: 'PATCH', url: '=/devices/{{$parameter.deviceId}}/rename/{{$parameter.newHostname}}', }, }, }, { name: 'Get Components', value: 'getComponents', description: 'Get device components', action: 'Get device components', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/components', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'components', }, }, ], }, }, }, { name: 'Get Groups', value: 'getGroups', description: 'Get device groups', action: 'Get device groups', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/groups', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'groups', }, }, ], }, }, }, { name: 'Get Ports', value: 'getPorts', description: 'Get device ports', action: 'Get device ports', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/ports', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'ports', }, }, ], }, }, }, { name: 'Get IP Addresses', value: 'getIpAddresses', description: 'Get device IP addresses', action: 'Get device IP addresses', routing: { request: { method: 'GET', url: '=/devices/{{$parameter.deviceId}}/ip', }, output: { postReceive: [ { type: 'rootProperty', properties: { property: 'addresses', }, }, ], }, }, }, ], default: 'getAll', }, ]; exports.devicesFields = [ // Device ID field for operations that need it { displayName: 'Device', name: 'deviceId', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: [ 'get', 'update', 'delete', 'discover', 'getAvailability', 'getOutages', 'setMaintenance', 'getMaintenanceStatus', 'rename', 'getComponents', 'getGroups', 'getPorts', 'getIpAddresses', ], }, }, default: '', placeholder: 'hostname or device ID', description: 'Device hostname or ID', }, // New hostname field for rename operation { displayName: 'New Hostname', name: 'newHostname', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: ['rename'], }, }, default: '', description: 'New hostname for the device', }, // Fields for device creation { displayName: 'Hostname', name: 'hostname', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: ['create'], }, }, default: '', description: 'Device hostname or IP address', }, { displayName: 'SNMP Version', name: 'version', type: 'options', displayOptions: { show: { resource: ['devices'], operation: ['create'], }, }, options: [ { name: 'v1', value: 'v1', }, { name: 'v2c', value: 'v2c', }, { name: 'v3', value: 'v3', }, ], default: 'v2c', description: 'SNMP version to use', }, { displayName: 'Community String', name: 'community', type: 'string', displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v1', 'v2c'], }, }, default: 'public', description: 'SNMP community string', }, { displayName: 'SNMP v3 Username', name: 'authlevel', type: 'string', displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], }, }, default: '', description: 'SNMPv3 username', }, { displayName: 'Authentication Level', name: 'authname', type: 'options', displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], }, }, options: [ { name: 'No Auth, No Priv', value: 'noAuthNoPriv' }, { name: 'Auth, No Priv', value: 'authNoPriv' }, { name: 'Auth, Priv', value: 'authPriv' }, ], default: 'noAuthNoPriv', description: 'SNMPv3 authentication level', }, { displayName: 'Authentication Protocol', name: 'authpass', type: 'options', displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], authname: ['authNoPriv', 'authPriv'], }, }, options: [ { name: 'MD5', value: 'MD5' }, { name: 'SHA', value: 'SHA' }, ], default: 'MD5', description: 'SNMPv3 authentication protocol', }, { displayName: 'Authentication Password', name: 'cryptopass', type: 'string', typeOptions: { password: true }, displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], authname: ['authNoPriv', 'authPriv'], }, }, default: '', description: 'SNMPv3 authentication password', }, { displayName: 'Privacy Protocol', name: 'privproto', type: 'options', displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], authname: ['authPriv'], }, }, options: [ { name: 'DES', value: 'DES' }, { name: 'AES', value: 'AES' }, ], default: 'DES', description: 'SNMPv3 privacy protocol', }, { displayName: 'Privacy Password', name: 'privpass', type: 'string', typeOptions: { password: true }, displayOptions: { show: { resource: ['devices'], operation: ['create'], version: ['v3'], authname: ['authPriv'], }, }, default: '', description: 'SNMPv3 privacy password', }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['devices'], operation: ['create'], }, }, options: [ { displayName: 'Display Name', name: 'display', type: 'string', default: '', description: 'Display name for the device', }, { displayName: 'Port', name: 'port', type: 'number', default: 161, description: 'SNMP port', }, { displayName: 'Transport', name: 'transport', type: 'options', options: [ { name: 'UDP', value: 'udp' }, { name: 'TCP', value: 'tcp' }, { name: 'UDP6', value: 'udp6' }, { name: 'TCP6', value: 'tcp6' }, ], default: 'udp', description: 'SNMP transport protocol', }, { displayName: 'Force Add', name: 'force_add', type: 'boolean', default: false, description: 'Skip checks and add device directly', }, ], }, // Fields for device updates { displayName: 'Field', name: 'field', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: ['update'], }, }, default: '', description: 'Field name to update', }, { displayName: 'Value', name: 'data', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: ['update'], }, }, default: '', description: 'New value for the field', }, // Fields for maintenance { displayName: 'Duration', name: 'duration', type: 'string', required: true, displayOptions: { show: { resource: ['devices'], operation: ['setMaintenance'], }, }, default: '2:00', placeholder: '2:00', description: 'Duration in format H:i (e.g., 2:00 for 2 hours)', }, { displayName: 'Additional Options', name: 'maintenanceOptions', type: 'collection', placeholder: 'Add Option', default: {}, displayOptions: { show: { resource: ['devices'], operation: ['setMaintenance'], }, }, options: [ { displayName: 'Title', name: 'title', type: 'string', default: '', description: 'Title for the maintenance', }, { displayName: 'Notes', name: 'notes', type: 'string', default: '', description: 'Notes for the maintenance', }, { displayName: 'Start Time', name: 'start', type: 'string', default: '', placeholder: '2024-01-01 10:00:00', description: 'Start time in Y-m-d H:i:s format', }, ], }, // Date range options for availability and outages { displayName: 'Date Range Options', name: 'dateRangeOptions', type: 'collection', placeholder: 'Add Date Range', default: {}, displayOptions: { show: { resource: ['devices'], operation: ['getAvailability', 'getOutages'], }, }, options: [ { displayName: 'From Date', name: 'from', type: 'string', default: '', placeholder: '2024-01-01', description: 'Start date (YYYY-MM-DD format)', routing: { send: { type: 'query', property: 'from', }, }, }, { displayName: 'To Date', name: 'to', type: 'string', default: '', placeholder: '2024-12-31', description: 'End date (YYYY-MM-DD format)', routing: { send: { type: 'query', property: 'to', }, }, }, ], }, // Filter options for getAll { displayName: 'Filters', name: 'filters', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { resource: ['devices'], operation: ['getAll'], }, }, options: [ { displayName: 'Type', name: 'type', type: 'options', options: [ { name: 'All', value: 'all' }, { name: 'Active', value: 'active' }, { name: 'Ignored', value: 'ignored' }, { name: 'Up', value: 'up' }, { name: 'Down', value: 'down' }, { name: 'Disabled', value: 'disabled' }, ], default: 'all', description: 'Filter devices by status', routing: { send: { type: 'query', property: 'type', }, }, }, { displayName: 'Order', name: 'order', type: 'string', default: '', placeholder: 'hostname DESC', description: 'Order results (e.g., hostname DESC)', routing: { send: { type: 'query', property: 'order', }, }, }, { displayName: 'Query', name: 'query', type: 'string', default: '', placeholder: 'search term', description: 'Search devices by hostname, IP, or other fields', routing: { send: { type: 'query', property: 'query', }, }, }, { displayName: 'Sort Order', name: 'sort', type: 'options', options: [ { name: 'Ascending', value: 'ASC' }, { name: 'Descending', value: 'DESC' }, ], default: 'ASC', description: 'Sort order for results', routing: { send: { type: 'query', property: 'sort', }, }, }, { displayName: 'Limit', name: 'limit', type: 'number', default: 50, description: 'Maximum number of devices to return', routing: { send: { type: 'query', property: 'limit', }, }, }, { displayName: 'Offset', name: 'offset', type: 'number', default: 0, description: 'Number of devices to skip (for pagination)', routing: { send: { type: 'query', property: 'offset', }, }, }, ], }, ];