UNPKG

n8n-nodes-netbox

Version:

n8n community node for NetBox API integration with comprehensive DCIM, IPAM, and data center management operations

259 lines (258 loc) 11.7 kB
"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 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, }, }, }; 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; } }