From 3fe5a2ddff2c45c540d5e89ef50e5137d27f87d8 Mon Sep 17 00:00:00 2001 From: Omar Ajoue Date: Wed, 6 Oct 2021 20:14:53 +0200 Subject: [PATCH] :bug: Fix run deck node (#2285) --- .../nodes-base/nodes/Rundeck/Rundeck.node.ts | 4 +++- .../nodes-base/nodes/Rundeck/RundeckApi.ts | 23 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts b/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts index 15a75c3c1..c6d68d028 100644 --- a/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts +++ b/packages/nodes-base/nodes/Rundeck/Rundeck.node.ts @@ -163,9 +163,11 @@ export class Rundeck implements INodeType { const operation = this.getNodeParameter('operation', 0) as string; const resource = this.getNodeParameter('resource', 0) as string; + const rundeckApi = new RundeckApi(this); + await rundeckApi.init(); + for (let i = 0; i < length; i++) { - const rundeckApi = new RundeckApi(this); if (resource === 'job') { if (operation === 'execute') { diff --git a/packages/nodes-base/nodes/Rundeck/RundeckApi.ts b/packages/nodes-base/nodes/Rundeck/RundeckApi.ts index 890d595cc..d7d43a3d7 100644 --- a/packages/nodes-base/nodes/Rundeck/RundeckApi.ts +++ b/packages/nodes-base/nodes/Rundeck/RundeckApi.ts @@ -8,20 +8,12 @@ export interface RundeckCredentials { } export class RundeckApi { - private credentials: RundeckCredentials; + private credentials?: RundeckCredentials; private executeFunctions: IExecuteFunctions; constructor(executeFunctions: IExecuteFunctions) { - const credentials = executeFunctions.getCredentials('rundeckApi'); - this.executeFunctions = executeFunctions; - - if (credentials === undefined) { - throw new NodeOperationError(this.executeFunctions.getNode(), 'No credentials got returned!'); - } - - this.credentials = credentials as unknown as RundeckCredentials; } @@ -30,12 +22,12 @@ export class RundeckApi { const options: OptionsWithUri = { headers: { 'user-agent': 'n8n', - 'X-Rundeck-Auth-Token': this.credentials.token, + 'X-Rundeck-Auth-Token': this.credentials?.token, }, rejectUnauthorized: false, method, qs: query, - uri: this.credentials.url + endpoint, + uri: this.credentials?.url + endpoint, body, json: true, }; @@ -47,6 +39,15 @@ export class RundeckApi { } } + async init() { + const credentials = await this.executeFunctions.getCredentials('rundeckApi'); + + if (credentials === undefined) { + throw new NodeOperationError(this.executeFunctions.getNode(), 'No credentials got returned!'); + } + + this.credentials = credentials as unknown as RundeckCredentials; + } executeJob(jobId: string, args: IDataObject[]): Promise {