UNPKG

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
"use strict"; 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; } }