n8n-nodes-awx
Version:
n8n node to interact with Ansible AWX/Tower with improved type safety
358 lines • 11.7 kB
JavaScript
;
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