n8n-nodes-arubacentralnextgen
Version:
n8n community node for Aruba Central NextGen API integration with modern monitoring and management capabilities
285 lines (284 loc) • 11.8 kB
JavaScript
;
// methods/monitoring/devices/devices.methods.ts
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.getAllDevices = getAllDevices;
exports.getDeviceInventory = getDeviceInventory;
const apiRequest_1 = require("../../../helpers/apiRequest");
const responseFormatter_1 = require("../../../helpers/responseFormatter");
const logger = __importStar(require("../../../helpers/logger"));
/**
* Get all devices from network monitoring
*/
async function getAllDevices() {
var _a;
const debugMode = logger.isDebugMode(this);
if (debugMode) {
logger.debug('Starting getAllDevices operation', undefined, this);
}
try {
// Get parameters from node
const limit = this.getNodeParameter('limit', 0, 20);
const returnAll = this.getNodeParameter('returnAll', 0, false);
const filters = this.getNodeParameter('filters', 0, {});
const sortOptions = this.getNodeParameter('sortOptions', 0, '');
if (debugMode) {
logger.debug('Retrieved parameters', { limit, returnAll, sortOptions, filters }, this);
}
// Prepare query parameters
const queryParams = {};
// Add limit if not returning all
if (!returnAll) {
queryParams.limit = limit;
}
// Build filter string based on provided options
if (Object.keys(filters).length) {
const filterExpressions = [];
for (const [field, value] of Object.entries(filters)) {
if (value !== undefined && value !== '') {
if (Array.isArray(value)) {
// Handle 'in' operator for arrays
filterExpressions.push(`${field} in (${value.map((v) => `'${v}'`).join(',')})`);
}
else {
// Handle 'eq' operator for single values
filterExpressions.push(`${field} eq '${value}'`);
}
}
}
if (filterExpressions.length) {
queryParams.filter = filterExpressions.join(' and ');
if (debugMode) {
logger.debug('Generated filter expression', { filter: queryParams.filter }, this);
}
}
}
// Add sort if provided
if (sortOptions) {
queryParams.sort = sortOptions;
}
const endpoint = '/network-monitoring/v1alpha1/devices';
// If returning all results, handle pagination
if (returnAll) {
let allDevices = [];
let hasMore = true;
let nextCursor;
let pageCount = 0;
if (debugMode) {
logger.debug('Starting pagination to retrieve all devices', undefined, this);
}
while (hasMore) {
pageCount++;
// Add next cursor for pagination
if (nextCursor) {
queryParams.next = nextCursor;
}
if (debugMode) {
logger.debug(`Fetching page ${pageCount}`, {
hasNextCursor: !!nextCursor,
}, this);
}
// Make API call
const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, queryParams, { skipDebug: pageCount > 1 });
if (response.devices && response.devices.length) {
allDevices = [...allDevices, ...response.devices];
if (debugMode && pageCount % 5 === 0) {
// Log status every 5 pages
logger.debug(`Retrieved ${allDevices.length} devices so far (page ${pageCount})`, undefined, this);
}
}
// Check if there are more pages
if (response.next && response.next !== '') {
nextCursor = response.next;
}
else {
hasMore = false;
if (debugMode) {
logger.debug(`Pagination complete, fetched ${allDevices.length} devices from ${pageCount} pages`, undefined, this);
}
}
}
return responseFormatter_1.formatResponse.call(this, {
count: allDevices.length,
devices: allDevices,
});
}
else {
// Make single API call
if (debugMode) {
logger.debug(`Making single page request with limit ${limit}`, undefined, this);
}
const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, queryParams);
if (debugMode) {
logger.debug(`Retrieved ${((_a = response.devices) === null || _a === void 0 ? void 0 : _a.length) || 0} devices`, undefined, this);
}
return responseFormatter_1.formatResponse.call(this, response);
}
}
catch (error) {
logger.error('Error in getAllDevices', error);
throw error;
}
}
/**
* Get device inventory
*/
async function getDeviceInventory() {
var _a;
const debugMode = logger.isDebugMode(this);
if (debugMode) {
logger.debug('Starting getDeviceInventory operation', undefined, this);
}
try {
// Get parameters from node
const limit = this.getNodeParameter('limit', 0, 20);
const returnAll = this.getNodeParameter('returnAll', 0, false);
const filters = this.getNodeParameter('filters', 0, {});
const sortOptions = this.getNodeParameter('sortOptions', 0, '');
const search = this.getNodeParameter('search', 0, '');
const siteAssigned = this.getNodeParameter('siteAssigned', 0, '');
if (debugMode) {
logger.debug('Retrieved parameters', {
limit,
returnAll,
sortOptions,
filters,
search,
siteAssigned,
}, this);
}
// Prepare query parameters
const queryParams = {};
// Add limit if not returning all
if (!returnAll) {
queryParams.limit = limit;
}
// Build filter string based on provided options
if (Object.keys(filters).length) {
const filterExpressions = [];
for (const [field, value] of Object.entries(filters)) {
if (value !== undefined && value !== '') {
if (Array.isArray(value)) {
// Handle 'in' operator for arrays
filterExpressions.push(`${field} in (${value.map((v) => `'${v}'`).join(',')})`);
}
else {
// Handle 'eq' operator for single values
filterExpressions.push(`${field} eq '${value}'`);
}
}
}
if (filterExpressions.length) {
queryParams.filter = filterExpressions.join(' and ');
if (debugMode) {
logger.debug('Generated filter expression', { filter: queryParams.filter }, this);
}
}
}
// Add sort if provided
if (sortOptions) {
queryParams.sort = sortOptions;
}
// Add search if provided
if (search) {
queryParams.search = search;
}
// Add site-assigned filter if provided
if (siteAssigned) {
queryParams['site-assigned'] = siteAssigned;
}
const endpoint = '/network-monitoring/v1alpha1/device-inventory';
// If returning all results, handle pagination
if (returnAll) {
let allDevices = [];
let hasMore = true;
let nextCursor;
let pageCount = 0;
if (debugMode) {
logger.debug('Starting pagination to retrieve all devices from inventory', undefined, this);
}
while (hasMore) {
pageCount++;
// Add next cursor for pagination
if (nextCursor) {
queryParams.next = nextCursor;
}
if (debugMode) {
logger.debug(`Fetching inventory page ${pageCount}`, {
hasNextCursor: !!nextCursor,
}, this);
}
// Make API call
const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, queryParams, { skipDebug: pageCount > 1 });
if (response.devices && response.devices.length) {
allDevices = [...allDevices, ...response.devices];
if (debugMode && pageCount % 5 === 0) {
// Log status every 5 pages
logger.debug(`Retrieved ${allDevices.length} inventory devices so far (page ${pageCount})`, undefined, this);
}
}
// Check if there are more pages
if (response.next && response.next !== '') {
nextCursor = response.next;
}
else {
hasMore = false;
if (debugMode) {
logger.debug(`Pagination complete, fetched ${allDevices.length} inventory devices from ${pageCount} pages`, undefined, this);
}
}
}
return responseFormatter_1.formatResponse.call(this, {
count: allDevices.length,
devices: allDevices,
});
}
else {
// Make single API call
if (debugMode) {
logger.debug(`Making single inventory page request with limit ${limit}`, undefined, this);
}
const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, queryParams);
if (debugMode) {
logger.debug(`Retrieved ${((_a = response.devices) === null || _a === void 0 ? void 0 : _a.length) || 0} inventory devices`, undefined, this);
}
return responseFormatter_1.formatResponse.call(this, response);
}
}
catch (error) {
logger.error('Error in getDeviceInventory', error);
throw error;
}
}