n8n-nodes-netbox
Version:
n8n community node for NetBox API integration with comprehensive DCIM, IPAM, Virtualization, Circuits, Wireless, and data center management operations
379 lines (378 loc) • 18.2 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeOperation = executeOperation;
const devicesMethods = __importStar(require("../methods/dcim/devices/devices.methods"));
const deviceTypesMethods = __importStar(require("../methods/dcim/device-types/device-types.methods"));
const interfacesMethods = __importStar(require("../methods/dcim/interfaces/interfaces.methods"));
const manufacturersMethods = __importStar(require("../methods/dcim/manufacturers/manufacturers.methods"));
// Temporarily disabled for community node compilation
// import * as modulesMethods from '../methods/dcim/modules/modules.methods';
// import * as moduleBaysMethods from '../methods/dcim/module-bays/module-bays.methods';
// import * as moduleTypesMethods from '../methods/dcim/module-types/module-types.methods';
const platformsMethods = __importStar(require("../methods/dcim/platforms/platforms.methods"));
const sitesMethods = __importStar(require("../methods/dcim/sites/sites.methods"));
const regionsMethods = __importStar(require("../methods/dcim/regions/regions.methods"));
const prefixesMethods = __importStar(require("../methods/ipam/prefixes/prefixes.methods"));
const vlansMethods = __importStar(require("../methods/ipam/vlans/vlans.methods"));
const rolesMethods = __importStar(require("../methods/ipam/roles/roles.methods"));
const vlanGroupsMethods = __importStar(require("../methods/ipam/vlan-groups/vlan-groups.methods"));
const aggregatesMethods = __importStar(require("../methods/ipam/aggregates/aggregates.methods"));
const ipAddressesMethods = __importStar(require("../methods/ipam/ip-addresses/ip-addresses.methods"));
const tenantsMethods = __importStar(require("../methods/tenancy/tenants/tenants.methods"));
const tagsMethods = __importStar(require("../methods/extras/tags/tags.methods"));
const configContextsMethods = __importStar(require("../methods/extras/config-contexts/config-contexts.methods"));
const journalEntriesMethods = __importStar(require("../methods/extras/journal-entries/journal-entries.methods"));
const reportsMethods = __importStar(require("../methods/extras/reports/reports.methods"));
const configTemplatesMethods = __importStar(require("../methods/extras/config-templates/config-templates.methods"));
const clustersMethods = __importStar(require("../methods/virtualization/clusters/clusters.methods"));
const clusterGroupsMethods = __importStar(require("../methods/virtualization/cluster-groups/cluster-groups.methods"));
const clusterTypesMethods = __importStar(require("../methods/virtualization/cluster-types/cluster-types.methods"));
const virtualMachinesMethods = __importStar(require("../methods/virtualization/virtual-machines/virtual-machines.methods"));
const vmInterfacesMethods = __importStar(require("../methods/virtualization/vm-interfaces/vm-interfaces.methods"));
const providersMethods = __importStar(require("../methods/circuits/providers/providers.methods"));
const providerAccountsMethods = __importStar(require("../methods/circuits/provider-accounts/provider-accounts.methods"));
const providerNetworksMethods = __importStar(require("../methods/circuits/provider-networks/provider-networks.methods"));
const circuitTypesMethods = __importStar(require("../methods/circuits/circuit-types/circuit-types.methods"));
const circuitsMethods = __importStar(require("../methods/circuits/circuits/circuits.methods"));
const circuitTerminationsMethods = __importStar(require("../methods/circuits/circuit-terminations/circuit-terminations.methods"));
const wirelessLANGroupsMethods = __importStar(require("../methods/wireless/wireless-lan-groups/wireless-lan-groups.methods"));
const wirelessLANsMethods = __importStar(require("../methods/wireless/wireless-lans/wireless-lans.methods"));
const wirelessLinksMethods = __importStar(require("../methods/wireless/wireless-links/wireless-links.methods"));
const handlers = {
dcim: {
devices: {
list: devicesMethods.listDevices,
get: devicesMethods.getDevice,
create: devicesMethods.createDevice,
update: devicesMethods.updateDevice,
delete: devicesMethods.deleteDevice,
getInterfaces: devicesMethods.getInterfaces,
getConsolePorts: devicesMethods.getConsolePorts,
getConfigContext: devicesMethods.getConfigContext,
assignTag: devicesMethods.assignTag,
},
'device-types': {
list: deviceTypesMethods.listDeviceTypes,
get: deviceTypesMethods.getDeviceType,
create: deviceTypesMethods.createDeviceType,
update: deviceTypesMethods.updateDeviceType,
delete: deviceTypesMethods.deleteDeviceType,
},
interfaces: {
list: interfacesMethods.listInterfaces,
get: interfacesMethods.getInterface,
create: interfacesMethods.createInterface,
update: interfacesMethods.updateInterface,
delete: interfacesMethods.deleteInterface,
getConnections: interfacesMethods.getConnections,
},
manufacturers: {
list: manufacturersMethods.listManufacturers,
get: manufacturersMethods.getManufacturer,
create: manufacturersMethods.createManufacturer,
update: manufacturersMethods.updateManufacturer,
delete: manufacturersMethods.deleteManufacturer,
},
// Temporarily disabled for community node compilation
// modules: {
// list: modulesMethods.listModules,
// get: modulesMethods.getModule,
// create: modulesMethods.createModule,
// update: modulesMethods.updateModule,
// delete: modulesMethods.deleteModule,
// },
// 'module-bays': {
// list: moduleBaysMethods.listModuleBays,
// get: moduleBaysMethods.getModuleBay,
// create: moduleBaysMethods.createModuleBay,
// update: moduleBaysMethods.updateModuleBay,
// delete: moduleBaysMethods.deleteModuleBay,
// },
// 'module-types': {
// list: moduleTypesMethods.listModuleTypes,
// get: moduleTypesMethods.getModuleType,
// create: moduleTypesMethods.createModuleType,
// update: moduleTypesMethods.updateModuleType,
// delete: moduleTypesMethods.deleteModuleType,
// },
platforms: {
list: platformsMethods.listPlatforms,
get: platformsMethods.getPlatform,
create: platformsMethods.createPlatform,
update: platformsMethods.updatePlatform,
delete: platformsMethods.deletePlatform,
},
sites: {
list: sitesMethods.listSites,
get: sitesMethods.getSite,
create: sitesMethods.createSite,
update: sitesMethods.updateSite,
delete: sitesMethods.deleteSite,
getDevices: sitesMethods.getDevices,
getRacks: sitesMethods.getRacks,
},
regions: {
list: regionsMethods.listRegions,
get: regionsMethods.getRegion,
create: regionsMethods.createRegion,
update: regionsMethods.updateRegion,
delete: regionsMethods.deleteRegion,
getSites: regionsMethods.getSites,
},
},
ipam: {
prefixes: {
list: prefixesMethods.listPrefixes,
get: prefixesMethods.getPrefix,
create: prefixesMethods.createPrefix,
update: prefixesMethods.updatePrefix,
delete: prefixesMethods.deletePrefix,
getAvailableIPs: prefixesMethods.getAvailableIPs,
addTags: prefixesMethods.addTags,
},
vlans: {
list: vlansMethods.listVlans,
getById: vlansMethods.getVlanById,
getByName: vlansMethods.getVlanByName,
getByVid: vlansMethods.getVlanByVid,
create: vlansMethods.createVlan,
update: vlansMethods.updateVlan,
delete: vlansMethods.deleteVlan,
addTag: vlansMethods.addTag,
removeTag: vlansMethods.removeTag,
},
roles: {
list: rolesMethods.listRoles,
get: rolesMethods.getRole,
create: rolesMethods.createRole,
update: rolesMethods.updateRole,
delete: rolesMethods.deleteRole,
},
vlanGroups: {
list: vlanGroupsMethods.listVlanGroups,
get: vlanGroupsMethods.getVlanGroup,
create: vlanGroupsMethods.createVlanGroup,
update: vlanGroupsMethods.updateVlanGroup,
delete: vlanGroupsMethods.deleteVlanGroup,
},
aggregates: {
list: aggregatesMethods.listAggregates,
get: aggregatesMethods.getAggregate,
create: aggregatesMethods.createAggregate,
update: aggregatesMethods.updateAggregate,
delete: aggregatesMethods.deleteAggregate,
},
'ip-addresses': {
list: ipAddressesMethods.listIPAddresses,
get: ipAddressesMethods.getIPAddress,
create: ipAddressesMethods.createIPAddress,
update: ipAddressesMethods.updateIPAddress,
delete: ipAddressesMethods.deleteIPAddress,
},
},
tenancy: {
tenants: {
list: tenantsMethods.listTenants,
get: tenantsMethods.getTenant,
create: tenantsMethods.createTenant,
update: tenantsMethods.updateTenant,
delete: tenantsMethods.deleteTenant,
},
},
extras: {
tags: {
list: tagsMethods.listTags,
get: tagsMethods.getTag,
create: tagsMethods.createTag,
update: tagsMethods.updateTag,
delete: tagsMethods.deleteTag,
},
'config-contexts': {
list: configContextsMethods.listConfigContexts,
get: configContextsMethods.getConfigContext,
create: configContextsMethods.createConfigContext,
update: configContextsMethods.updateConfigContext,
delete: configContextsMethods.deleteConfigContext,
},
'journal-entries': {
list: journalEntriesMethods.listJournalEntries,
get: journalEntriesMethods.getJournalEntry,
create: journalEntriesMethods.createJournalEntry,
update: journalEntriesMethods.updateJournalEntry,
delete: journalEntriesMethods.deleteJournalEntry,
},
reports: {
list: reportsMethods.listReports,
get: reportsMethods.getReport,
run: reportsMethods.runReport,
},
'config-templates': {
list: configTemplatesMethods.listConfigTemplates,
get: configTemplatesMethods.getConfigTemplate,
create: configTemplatesMethods.createConfigTemplate,
update: configTemplatesMethods.updateConfigTemplate,
delete: configTemplatesMethods.deleteConfigTemplate,
render: configTemplatesMethods.renderConfigTemplate,
},
},
virtualization: {
clusters: {
list: clustersMethods.listClusters,
get: clustersMethods.getCluster,
create: clustersMethods.createCluster,
update: clustersMethods.updateCluster,
delete: clustersMethods.deleteCluster,
},
'cluster-groups': {
list: clusterGroupsMethods.listClusterGroups,
get: clusterGroupsMethods.getClusterGroup,
create: clusterGroupsMethods.createClusterGroup,
update: clusterGroupsMethods.updateClusterGroup,
delete: clusterGroupsMethods.deleteClusterGroup,
},
'cluster-types': {
list: clusterTypesMethods.listClusterTypes,
get: clusterTypesMethods.getClusterType,
create: clusterTypesMethods.createClusterType,
update: clusterTypesMethods.updateClusterType,
delete: clusterTypesMethods.deleteClusterType,
},
'virtual-machines': {
list: virtualMachinesMethods.listVirtualMachines,
get: virtualMachinesMethods.getVirtualMachine,
create: virtualMachinesMethods.createVirtualMachine,
update: virtualMachinesMethods.updateVirtualMachine,
delete: virtualMachinesMethods.deleteVirtualMachine,
getInterfaces: virtualMachinesMethods.getVirtualMachineInterfaces,
},
'vm-interfaces': {
list: vmInterfacesMethods.listVMInterfaces,
get: vmInterfacesMethods.getVMInterface,
create: vmInterfacesMethods.createVMInterface,
update: vmInterfacesMethods.updateVMInterface,
delete: vmInterfacesMethods.deleteVMInterface,
},
},
circuits: {
providers: {
list: providersMethods.listProviders,
get: providersMethods.getProvider,
create: providersMethods.createProvider,
update: providersMethods.updateProvider,
delete: providersMethods.deleteProvider,
},
'provider-accounts': {
list: providerAccountsMethods.listProviderAccounts,
get: providerAccountsMethods.getProviderAccount,
create: providerAccountsMethods.createProviderAccount,
update: providerAccountsMethods.updateProviderAccount,
delete: providerAccountsMethods.deleteProviderAccount,
},
'provider-networks': {
list: providerNetworksMethods.listProviderNetworks,
get: providerNetworksMethods.getProviderNetwork,
create: providerNetworksMethods.createProviderNetwork,
update: providerNetworksMethods.updateProviderNetwork,
delete: providerNetworksMethods.deleteProviderNetwork,
},
'circuit-types': {
list: circuitTypesMethods.listCircuitTypes,
get: circuitTypesMethods.getCircuitType,
create: circuitTypesMethods.createCircuitType,
update: circuitTypesMethods.updateCircuitType,
delete: circuitTypesMethods.deleteCircuitType,
},
circuits: {
list: circuitsMethods.listCircuits,
get: circuitsMethods.getCircuit,
create: circuitsMethods.createCircuit,
update: circuitsMethods.updateCircuit,
delete: circuitsMethods.deleteCircuit,
getTerminations: circuitsMethods.getCircuitTerminations,
},
'circuit-terminations': {
list: circuitTerminationsMethods.listCircuitTerminations,
get: circuitTerminationsMethods.getCircuitTermination,
create: circuitTerminationsMethods.createCircuitTermination,
update: circuitTerminationsMethods.updateCircuitTermination,
delete: circuitTerminationsMethods.deleteCircuitTermination,
},
},
wireless: {
'wireless-lan-groups': {
list: wirelessLANGroupsMethods.listWirelessLANGroups,
get: wirelessLANGroupsMethods.getWirelessLANGroup,
create: wirelessLANGroupsMethods.createWirelessLANGroup,
update: wirelessLANGroupsMethods.updateWirelessLANGroup,
delete: wirelessLANGroupsMethods.deleteWirelessLANGroup,
},
'wireless-lans': {
list: wirelessLANsMethods.listWirelessLANs,
get: wirelessLANsMethods.getWirelessLAN,
create: wirelessLANsMethods.createWirelessLAN,
update: wirelessLANsMethods.updateWirelessLAN,
delete: wirelessLANsMethods.deleteWirelessLAN,
},
'wireless-links': {
list: wirelessLinksMethods.listWirelessLinks,
get: wirelessLinksMethods.getWirelessLink,
create: wirelessLinksMethods.createWirelessLink,
update: wirelessLinksMethods.updateWirelessLink,
delete: wirelessLinksMethods.deleteWirelessLink,
},
},
};
async function executeOperation() {
const domain = this.getNodeParameter('domain', 0);
const resource = this.getNodeParameter('resource', 0);
const operation = this.getNodeParameter('operation', 0);
try {
// Check if handler exists
if (!handlers[domain] ||
!handlers[domain][resource] ||
!handlers[domain][resource][operation]) {
throw new Error(`Operation ${domain}:${resource}:${operation} not implemented`);
}
// Call the appropriate handler
const handler = handlers[domain][resource][operation];
const result = await handler.call(this);
return result; // Return directly without wrapping
}
catch (error) {
console.log('Error in executeOperation:', error);
throw error;
}
}