diff --git a/src/api/manager/workflow.ts b/src/api/manager/workflow.ts index bcc54c81..1934914b 100644 --- a/src/api/manager/workflow.ts +++ b/src/api/manager/workflow.ts @@ -384,6 +384,14 @@ export async function stopProduction( success: true } as StopProductionStep }; + let resetPipelineStatus = { + ok: true, + value: { + step: 'reset_pipeline', + success: true + } as StopProductionStep + }; + const pipelineIds = production.production_settings.pipelines.map( (p) => p.pipeline_id ); @@ -553,17 +561,34 @@ export async function stopProduction( Log().info(`Pipeline '${id}' stopped`); } + const resetPipelinePromises = pipelineIds.map((pipeline) => { + Log().info(`Resetting pipeline: ${pipeline!}`); + return resetPipeline(pipeline!); + }); + await Promise.all(resetPipelinePromises).catch((error) => { + resetPipelineStatus = { + ok: false, + value: { + step: 'reset_pipeline', + success: false, + message: `Failed to reset pipelines: ${error}` + } + }; + }); + if ( !disconnectConnectionsStatus.ok || !removePipelineStreamsStatus.ok || - !deleteMultiviewsStatus.ok + !deleteMultiviewsStatus.ok || + !resetPipelineStatus.ok ) { return { ok: false, value: [ disconnectConnectionsStatus.value, removePipelineStreamsStatus.value, - deleteMultiviewsStatus.value + deleteMultiviewsStatus.value, + resetPipelineStatus.value ], error: 'Failed to stop production properly' }; @@ -573,7 +598,8 @@ export async function stopProduction( value: [ disconnectConnectionsStatus.value, removePipelineStreamsStatus.value, - deleteMultiviewsStatus.value + deleteMultiviewsStatus.value, + resetPipelineStatus.value ] }; } diff --git a/src/components/startProduction/StopProductionFeed.tsx b/src/components/startProduction/StopProductionFeed.tsx index 0b61fe4c..bef0a2db 100644 --- a/src/components/startProduction/StopProductionFeed.tsx +++ b/src/components/startProduction/StopProductionFeed.tsx @@ -18,6 +18,7 @@ export default function StopProductionFeed({ remove_pipeline_multiviews: t( 'stop_production_status.remove_pipeline_multiviews' ), + reset_pipeline: t('stop_production_status.reset_pipeline'), unexpected: t('stop_production_status.unexpected') }; return ( diff --git a/src/i18n/locales/en.ts b/src/i18n/locales/en.ts index 54118b2e..85c0de84 100644 --- a/src/i18n/locales/en.ts +++ b/src/i18n/locales/en.ts @@ -35,6 +35,7 @@ export const en = { disconnect_connections: 'Disconnect connections', remove_pipeline_streams: 'Remove streams', remove_pipeline_multiviews: 'Remove multiviews', + reset_pipeline: 'Reset pipelines', unexpected: 'Unexpected error' }, source: { diff --git a/src/i18n/locales/sv.ts b/src/i18n/locales/sv.ts index 8dca3196..8ff280e6 100644 --- a/src/i18n/locales/sv.ts +++ b/src/i18n/locales/sv.ts @@ -37,6 +37,7 @@ export const sv = { disconnect_connections: 'Frånkoppla anslutningar', remove_pipeline_streams: 'Ta bort strömmar', remove_pipeline_multiviews: 'Ta bort multiviews', + reset_pipeline: 'Rensa pipelines', unexpected: 'Oväntat fel' }, source: { diff --git a/src/interfaces/production.ts b/src/interfaces/production.ts index 00c5f480..a36ca2a1 100644 --- a/src/interfaces/production.ts +++ b/src/interfaces/production.ts @@ -59,6 +59,7 @@ export interface StopProductionStep { | 'disconnect_connections' | 'remove_pipeline_streams' | 'remove_pipeline_multiviews' + | 'reset_pipeline' | 'unexpected'; success: boolean; message?: string;