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
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 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;
}
}