UNPKG

n8n-nodes-awx

Version:

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

98 lines 5.51 kB
"use strict"; 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