n8n-nodes-arubacentral
Version:
n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities
87 lines (71 loc) • 2.61 kB
text/typescript
// methods/configuration/devices/group.methods.ts
import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
import { apiRequest } from '../../../helpers/apiRequest';
import { formatResponse } from '../../../helpers/responseFormatter';
import {
DeviceGroupInfo,
MoveDeviceToGroupRequest,
} from './devices.types';
/**
* Get the group associated with a specific device
*/
export async function getDeviceGroup(this: IExecuteFunctions): Promise<INodeExecutionData[]> {
try {
const deviceSerial = this.getNodeParameter('deviceSerial', 0) as string;
if (!deviceSerial) {
throw new Error('Device serial is required');
}
console.log(`Getting group for device with serial: ${deviceSerial}`);
const endpoint = `/configuration/v1/devices/${deviceSerial}/group`;
const response = await apiRequest.call(this, 'GET', endpoint);
console.log('API Response for getDeviceGroup:', response);
return formatResponse(response);
} catch (error) {
console.log('ERROR in getDeviceGroup:', error);
throw error;
}
}
/**
* Move devices to a specific group
*/
export async function moveDevicesToGroup(this: IExecuteFunctions): Promise<INodeExecutionData[]> {
try {
const group = this.getNodeParameter('group', 0) as string;
const serials = this.getNodeParameter('serials', 0) as string[];
const preserveConfigOverrides = this.getNodeParameter(
'preserve_config_overrides',
0,
[],
) as string[];
if (!group || !serials || serials.length === 0) {
throw new Error('Group name and at least one device serial are required');
}
console.log(`Moving ${serials.length} devices to group: ${group}`);
console.log(`Device serials: ${serials.join(', ')}`);
const body: MoveDeviceToGroupRequest = {
group,
serials,
};
if (preserveConfigOverrides.length > 0) {
body.preserve_config_overrides = preserveConfigOverrides;
console.log(`Preserving config overrides for: ${preserveConfigOverrides.join(', ')}`);
}
const endpoint = '/configuration/v1/devices/move';
const response = await apiRequest.call(this, 'POST', endpoint, body);
console.log('API Response for moveDevicesToGroup:', response);
// Handle string response
if (typeof response === 'string') {
console.log('Received string response, converting to object');
const formattedResponse = {
success: response.toLowerCase().includes('success'),
message: response,
serials: serials,
};
return formatResponse(formattedResponse);
}
return formatResponse(response);
} catch (error) {
console.log('ERROR in moveDevicesToGroup:', error);
throw error;
}
}