n8n-nodes-netbox
Version:
n8n community node for NetBox API integration with comprehensive DCIM, IPAM, Virtualization, Circuits, Wireless, and data center management operations
147 lines (146 loc) • 5.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.listVirtualDeviceContexts = listVirtualDeviceContexts;
exports.getVirtualDeviceContext = getVirtualDeviceContext;
exports.createVirtualDeviceContext = createVirtualDeviceContext;
exports.updateVirtualDeviceContext = updateVirtualDeviceContext;
exports.deleteVirtualDeviceContext = deleteVirtualDeviceContext;
const apiRequest_1 = require("../../../helpers/apiRequest");
const responseFormatter_1 = require("../../../helpers/responseFormatter");
async function listVirtualDeviceContexts() {
try {
// Get pagination parameters
const returnAll = this.getNodeParameter('returnAll', 0);
// Get filters - this will include all the advanced filter fields
const filters = this.getNodeParameter('filters', 0, {});
// Prepare query parameters
const queryParams = { ...filters };
let responseData;
if (returnAll) {
// Add higher limit to the first query when listing virtual device contexts
if (!queryParams.limit) {
queryParams.limit = 500; // Higher limit for faster pagination
}
responseData = await apiRequest_1.apiRequestAllItems.call(this, 'GET', '/api/dcim/virtual-device-contexts/', {}, queryParams);
}
else {
const limit = this.getNodeParameter('limit', 0);
queryParams.limit = limit;
const response = await apiRequest_1.apiRequest.call(this, 'GET', '/api/dcim/virtual-device-contexts/', {}, queryParams);
responseData = response.results || response;
}
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
throw error;
}
}
async function getVirtualDeviceContext() {
try {
const virtualDeviceContextId = this.getNodeParameter('virtualDeviceContextId', 0);
const responseData = await apiRequest_1.apiRequest.call(this, 'GET', `/api/dcim/virtual-device-contexts/${virtualDeviceContextId}/`);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
throw error;
}
}
async function createVirtualDeviceContext() {
try {
const body = {};
// Required fields
const name = this.getNodeParameter('virtualDeviceContextName', 0);
const device = this.getNodeParameter('device', 0);
const status = this.getNodeParameter('status', 0);
body.name = name;
body.device = device;
body.status = status;
// Optional fields
const additionalFields = this.getNodeParameter('additionalFields', 0, {});
if (additionalFields.identifier !== undefined) {
body.identifier = additionalFields.identifier;
}
if (additionalFields.tenant) {
body.tenant = additionalFields.tenant;
}
if (additionalFields.primary_ip4) {
body.primary_ip4 = additionalFields.primary_ip4;
}
if (additionalFields.primary_ip6) {
body.primary_ip6 = additionalFields.primary_ip6;
}
if (additionalFields.description) {
body.description = additionalFields.description;
}
if (additionalFields.comments) {
body.comments = additionalFields.comments;
}
if (additionalFields.tags) {
body.tags = additionalFields.tags;
}
if (additionalFields.custom_fields) {
body.custom_fields = JSON.parse(additionalFields.custom_fields);
}
const responseData = await apiRequest_1.apiRequest.call(this, 'POST', '/api/dcim/virtual-device-contexts/', body);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
throw error;
}
}
async function updateVirtualDeviceContext() {
try {
const virtualDeviceContextId = this.getNodeParameter('virtualDeviceContextId', 0);
const body = {};
// Optional fields for update
const updateFields = this.getNodeParameter('updateFields', 0, {});
if (updateFields.name) {
body.name = updateFields.name;
}
if (updateFields.device) {
body.device = updateFields.device;
}
if (updateFields.status) {
body.status = updateFields.status;
}
if (updateFields.identifier !== undefined) {
body.identifier = updateFields.identifier;
}
if (updateFields.tenant) {
body.tenant = updateFields.tenant;
}
if (updateFields.primary_ip4) {
body.primary_ip4 = updateFields.primary_ip4;
}
if (updateFields.primary_ip6) {
body.primary_ip6 = updateFields.primary_ip6;
}
if (updateFields.description) {
body.description = updateFields.description;
}
if (updateFields.comments) {
body.comments = updateFields.comments;
}
if (updateFields.tags) {
body.tags = updateFields.tags;
}
if (updateFields.custom_fields) {
body.custom_fields = JSON.parse(updateFields.custom_fields);
}
const responseData = await apiRequest_1.apiRequest.call(this, 'PATCH', `/api/dcim/virtual-device-contexts/${virtualDeviceContextId}/`, body);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
throw error;
}
}
async function deleteVirtualDeviceContext() {
try {
const virtualDeviceContextId = this.getNodeParameter('virtualDeviceContextId', 0);
await apiRequest_1.apiRequest.call(this, 'DELETE', `/api/dcim/virtual-device-contexts/${virtualDeviceContextId}/`);
return [{ json: { success: true } }];
}
catch (error) {
throw error;
}
}