diff --git a/spin-observatory-plugin-deck/src/components/actions/RetriggerButton.tsx b/spin-observatory-plugin-deck/src/components/actions/RetriggerButton.tsx index 6915012..71dbc54 100644 --- a/spin-observatory-plugin-deck/src/components/actions/RetriggerButton.tsx +++ b/spin-observatory-plugin-deck/src/components/actions/RetriggerButton.tsx @@ -27,7 +27,6 @@ export const RetriggerButton = ({ executions, refreshExecutions }: IRetriggerBut console.log(res.status); return res.json(); }) - /* eslint-disable no-console */ .then((data) => console.log(data)) .catch((e) => console.error('error retriggering: ', e)) .finally(() => { diff --git a/spin-observatory-plugin-deck/src/services/broadside.ts b/spin-observatory-plugin-deck/src/services/broadside.ts index 3dc332f..53e6932 100644 --- a/spin-observatory-plugin-deck/src/services/broadside.ts +++ b/spin-observatory-plugin-deck/src/services/broadside.ts @@ -6,24 +6,44 @@ const BROADSIDE_URI = `${SETTINGS.gateUrl}/proxies/broadside/v1/broadsides`; // See https://github.com/one-thd/broadside/blob/main/api/swagger.yml#L206 const retriggerExecutions = ({ executions }: { executions: IExecution[] }) => { /*** - * application: "clipper" - * pipelineNameOrId: "Generate Clipper X.509 Key Pair" - * amount: 50 - * delay: 100 - * pipelineBaseParameters: '{ "parameterName": "custom data" }' + * application: "clipper" + * pipelineNameOrId: "Generate Clipper X.509 Key Pair" + * amount: 50 + * delay: 100 + * pipelineBaseParameters: '{ "parameterName": "custom data" }' * pipelineMultiParameters: '[ { "multiParameterName": "custom data" } ]' + * executionID: 'QWERTYUIOP' */ - const application = executions[0].application; - const pipelineNameOrId = executions[0].name; - const amount = executions.length; - const pipelineMultiParameters = executions.map((e) => e.trigger.parameters); + const broadsideRequest = JSON.stringify({ + application: executions[0].application, + pipelineNameOrId: executions[0].name, + amount: executions.length, + pipelineMultiParameters: executions.map((e) => e.trigger.parameters), + executionID: getParentExecutionId(executions[0]), + }); return fetch(BROADSIDE_URI, { method: 'POST', credentials: 'include', - body: JSON.stringify({ application, pipelineNameOrId, amount, pipelineMultiParameters }), + body: broadsideRequest, }); }; +const getParentExecutionId = (e: IExecution) => { + let executionID; + const parent = e.trigger.parentExecution; + const parameters = e.trigger.parameters; + + if (parent && parent.id) { + executionID = parent.id; + } else if (parameters && parameters['parentExecutionId']) { + executionID = parameters['parentExecutionId']; + } else { + executionID = e.id; + } + + return executionID; +}; + export const broadside = { retriggerExecutions };