UNPKG

n8n-nodes-awx

Version:

n8n node to interact with Ansible AWX/Tower with improved type safety

358 lines 11.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateActionProperty = generateActionProperty; exports.generateIdParameter = generateIdParameter; exports.generateNameParameter = generateNameParameter; exports.generateFilterParameter = generateFilterParameter; exports.generateDateFilterParameter = generateDateFilterParameter; exports.generateGroupNameIContainsParameter = generateGroupNameIContainsParameter; exports.generateProjectNameIContainsParameter = generateProjectNameIContainsParameter; exports.generateHostNameIContainsParameter = generateHostNameIContainsParameter; exports.generateInventoryNameIContainsParameter = generateInventoryNameIContainsParameter; exports.generateTemplateNameIContainsParameter = generateTemplateNameIContainsParameter; exports.generateWorkflowTemplateNameIContainsParameter = generateWorkflowTemplateNameIContainsParameter; exports.generateResponseFormatParameter = generateResponseFormatParameter; exports.generateReturnAllParameter = generateReturnAllParameter; exports.generateLimitParameter = generateLimitParameter; exports.generateInventoryNameParameter = generateInventoryNameParameter; exports.generateGroupIdFilterParameter = generateGroupIdFilterParameter; exports.generateGroupNameFilterParameter = generateGroupNameFilterParameter; exports.generateResourceSelectionParameter = generateResourceSelectionParameter; exports.generateCredentialParameter = generateCredentialParameter; exports.generateNodeTypeDescription = generateNodeTypeDescription; const ResourceActionMap_1 = require("./ResourceActionMap"); function generateActionProperty(resourceType) { return { displayName: 'Action', name: 'action', type: 'options', noDataExpression: true, displayOptions: { show: { resource: [resourceType], }, }, options: ResourceActionMap_1.resourceActionMap[resourceType], default: 'list', description: `The operation to perform on ${resourceType}s`, }; } function generateIdParameter(resourceType, actions = ['get', 'update', 'delete'], required = true) { const formattedType = resourceType .replace(/([A-Z])/g, ' $1') .replace(/^./, (str) => str.toUpperCase()); return { displayName: `${formattedType} ID`, name: `${resourceType}Id`, type: 'string', default: '', required, displayOptions: { show: { resource: [resourceType], action: actions, }, }, description: `The ID of the ${resourceType}`, }; } function generateNameParameter(resourceType, actions = ['get', 'update']) { const formattedType = resourceType .replace(/([A-Z])/g, ' $1') .replace(/^./, (str) => str.toUpperCase()); return { displayName: `${formattedType} Name`, name: `${resourceType}Name`, type: 'string', default: '', required: false, description: `Name of the ${resourceType} (alternative to ID)`, displayOptions: { show: { resource: [resourceType], action: actions, }, }, }; } function generateFilterParameter(resourceType, placeholder = '') { return { displayName: 'Filter', name: 'filter', type: 'string', default: '', placeholder, description: `Filter ${resourceType}s by name or other attributes`, displayOptions: { show: { resource: [resourceType], action: ['list'], }, }, }; } function generateDateFilterParameter(resourceType) { return { displayName: 'Date Filter', name: 'dateFilter', type: 'string', default: '', placeholder: 'created__gt=2023-01-01', description: `[IMPORTANT] Filter ${resourceType}s by date (e.g., created__gt=2023-01-01, created__lt=2023-12-31)`, displayOptions: { show: { resource: [resourceType], action: ['list'], }, }, }; } function generateGroupNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'groupName__icontains', type: 'string', default: '', required: false, description: 'Return groups where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['group'], action: ['list'], }, }, }; } function generateProjectNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'projectName__icontains', type: 'string', default: '', required: false, description: 'Return projects where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['project'], action: ['list'], }, }, }; } function generateHostNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'hostName__icontains', type: 'string', default: '', required: false, description: 'Return hosts where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['host'], action: ['list'], }, }, }; } function generateInventoryNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'inventoryName__icontains', type: 'string', default: '', required: false, description: 'Return inventories where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['inventory'], action: ['list'], }, }, }; } function generateTemplateNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'templateName__icontains', type: 'string', default: '', required: false, description: 'Return job templates where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['jobTemplate'], action: ['list'], }, }, }; } function generateWorkflowTemplateNameIContainsParameter() { return { displayName: 'Name contains (case-insensitive)', name: 'workflowTemplateName__icontains', type: 'string', default: '', required: false, description: 'Return workflow job templates where the name contains this substring (case-insensitive).', displayOptions: { show: { resource: ['workflowJobTemplate'], action: ['list'], }, }, }; } function generateResponseFormatParameter(resourceTypes) { return { displayName: 'Response Format', name: 'responseFormat', type: 'options', options: [ { name: 'Standard (Full Response)', value: 'standard', description: 'Return the complete API response', }, { name: 'Friendly (Simplified)', value: 'friendly', description: 'Return a simplified response with the most important fields', }, { name: 'Minimal', value: 'minimal', description: 'Return the absolute minimum data needed (smallest response size)', }, ], default: 'friendly', description: 'The format of the response', displayOptions: { show: { resource: resourceTypes, action: ['list', 'get'], }, }, }; } function generateReturnAllParameter(resourceTypes) { return { displayName: 'Return All', name: 'returnAll', type: 'boolean', default: false, description: 'Whether to return all results or only up to a given limit', displayOptions: { show: { resource: resourceTypes, action: ['list'], }, }, }; } function generateLimitParameter(resourceTypes, defaultLimit = 50) { return { displayName: 'Limit', name: 'limit', type: 'number', default: defaultLimit, description: 'Max number of results to return', typeOptions: { minValue: 1, }, displayOptions: { show: { resource: resourceTypes, action: ['list'], returnAll: [false], }, }, }; } function generateInventoryNameParameter(resourceTypes, actions = ['get', 'list', 'create', 'update', 'delete']) { return { displayName: 'Inventory Name', name: 'inventoryName', type: 'string', default: '', required: true, displayOptions: { show: { resource: resourceTypes, action: actions, }, }, description: 'Name of the inventory containing the group or host', }; } function generateGroupIdFilterParameter(actions = ['get', 'list']) { return { displayName: 'Group ID', name: 'groupId', type: 'string', default: '', required: false, displayOptions: { show: { resource: ['host'], action: actions, }, }, description: 'ID of the group to filter hosts by', }; } function generateGroupNameFilterParameter(actions = ['get', 'list']) { return { displayName: 'Group Name', name: 'filterGroupName', type: 'string', default: '', required: false, displayOptions: { show: { resource: ['host'], action: actions, }, }, description: 'Name of the group to filter hosts by (alternative to Group ID)', }; } function generateResourceSelectionParameter(resourceOptions, defaultResource = 'job') { return { displayName: 'Resource', name: 'resource', type: 'options', required: true, default: defaultResource, options: resourceOptions, description: 'The AWX resource to operate on', }; } function generateCredentialParameter(credentialName = 'awxApi', required = true) { return { name: credentialName, required, }; } function generateNodeTypeDescription(displayName = 'AWX', name = 'awxTool', iconPath = 'file:awx-logo.svg', defaultName = 'AWX Tool', properties = []) { return { displayName, name, icon: iconPath, group: ['transform'], version: 1, subtitle: '={{$parameter["resource"] + ": " + $parameter["action"]}}', description: 'Consume AWX/Ansible Automation Platform API', usableAsTool: true, defaults: { name: defaultName, }, inputs: ['main'], outputs: ['main'], credentials: [ generateCredentialParameter('awxApi', true), ], properties, }; } //# sourceMappingURL=PropertyGenerator.js.map