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
JavaScript
"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',
},
},
},
],
},
];