n8n-nodes-awx
Version:
n8n node to interact with Ansible AWX/Tower with improved type safety
98 lines • 5.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleJobTemplateOperations = handleJobTemplateOperations;
const n8n_workflow_1 = require("n8n-workflow");
const SharedHelpers_1 = require("../utils/SharedHelpers");
const resourceHelpers_1 = require("../utils/resourceHelpers");
async function handleJobTemplateOperations(action, itemIndex = 0) {
if (action === 'list') {
try {
const filter = this.getNodeParameter('filter', itemIndex, '');
const returnAll = this.getNodeParameter('returnAll', itemIndex, false);
const endpoint = '/job_templates/';
const queryParams = {};
if (filter) {
queryParams.search = filter;
}
const fetchMode = returnAll ? 'allPages' : 'firstPage';
const jobTemplates = await SharedHelpers_1.getAwxResources.call(this, endpoint, fetchMode, queryParams);
const responseFormat = this.getNodeParameter('responseFormat', itemIndex, 'friendly');
const formattedJobTemplates = jobTemplates.map(template => (0, resourceHelpers_1.formatResourceResponse)(template, responseFormat, 'job_template'));
return [this.helpers.returnJsonArray(formattedJobTemplates)];
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to list job templates: ${error.message}`, { itemIndex });
}
}
else if (action === 'get') {
try {
const idKeys = ['jobTemplateId', 'Job_Template_ID', 'id'];
const nameKeys = ['jobTemplateName', 'Job_Template_Name', 'name'];
const { id, name } = resourceHelpers_1.resolveResourceParameters.call(this, idKeys, nameKeys, 'job_template', itemIndex);
const jobTemplate = await SharedHelpers_1.getAwxResource.call(this, 'job_templates', { id, name });
const responseFormat = this.getNodeParameter('responseFormat', itemIndex, 'friendly');
const formattedJobTemplate = (0, resourceHelpers_1.formatResourceResponse)(jobTemplate, responseFormat, 'job_template');
return [[{ json: formattedJobTemplate }]];
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to get job template: ${error.message}`, { itemIndex });
}
}
else if (action === 'delete') {
try {
const idKeys = ['jobTemplateId', 'Job_Template_ID', 'id'];
const nameKeys = ['jobTemplateName', 'Job_Template_Name', 'name'];
const { id, name } = resourceHelpers_1.resolveResourceParameters.call(this, idKeys, nameKeys, 'job_template', itemIndex);
let resolvedJobTemplateId = id;
if (!resolvedJobTemplateId && name) {
const jobTemplate = await SharedHelpers_1.getAwxResource.call(this, 'job_templates', { name });
resolvedJobTemplateId = jobTemplate.id;
}
if (!resolvedJobTemplateId) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Job Template ID could not be determined for deletion.');
}
await SharedHelpers_1.deleteAwxResourceWithLogging.call(this, `/job_templates/${resolvedJobTemplateId}/`, itemIndex);
return [
this.helpers.returnJsonArray([{
success: true,
message: `Job Template ${name || resolvedJobTemplateId} deleted successfully.`,
}]),
];
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to delete job template: ${error.message}`, { itemIndex });
}
}
else if (action === 'launch') {
try {
const idKeys = ['jobTemplateId', 'Job_Template_ID', 'id'];
const nameKeys = ['jobTemplateName', 'Job_Template_Name', 'name'];
const { id, name } = resourceHelpers_1.resolveResourceParameters.call(this, idKeys, nameKeys, 'job_template', itemIndex);
let resolvedJobTemplateId = id;
if (!resolvedJobTemplateId && name) {
const jobTemplate = await SharedHelpers_1.getAwxResource.call(this, 'job_templates', { name });
resolvedJobTemplateId = jobTemplate.id;
}
if (!resolvedJobTemplateId) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Job Template ID could not be determined for launch.');
}
const extraVars = this.getNodeParameter('extraVars', itemIndex, '');
let extraVarsObj = {};
if (extraVars) {
try {
extraVarsObj = JSON.parse(extraVars);
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid JSON in extraVars field');
}
}
const response = await SharedHelpers_1.launchAwxTemplate.call(this, 'job_templates', resolvedJobTemplateId, extraVarsObj);
return [[{ json: response }]];
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to launch job template: ${error.message}`, { itemIndex });
}
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The action "${action}" is not supported for job templates`);
}
//# sourceMappingURL=JobTemplateResources.js.map