From 3bf4ec1127a92c9ed0229c7af722fd46cde90ef6 Mon Sep 17 00:00:00 2001 From: Ruslan Iushchenko Date: Tue, 18 Jun 2024 16:18:48 +0200 Subject: [PATCH] #423 Add pipeline failures to the pipeline info object. --- .../main/scala/za/co/absa/pramen/api/PipelineInfo.scala | 5 +++-- .../za/co/absa/pramen/core/state/PipelineStateImpl.scala | 3 ++- .../za/co/absa/pramen/core/mocks/PipelineInfoFactory.scala | 7 ++++--- .../notification/EcsPipelineNotificationTargetSuite.scala | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pramen/api/src/main/scala/za/co/absa/pramen/api/PipelineInfo.scala b/pramen/api/src/main/scala/za/co/absa/pramen/api/PipelineInfo.scala index 232bb28fe..12fae8755 100644 --- a/pramen/api/src/main/scala/za/co/absa/pramen/api/PipelineInfo.scala +++ b/pramen/api/src/main/scala/za/co/absa/pramen/api/PipelineInfo.scala @@ -16,7 +16,7 @@ package za.co.absa.pramen.api -import za.co.absa.pramen.api.status.RuntimeInfo +import za.co.absa.pramen.api.status.{PipelineNotificationFailure, RuntimeInfo} import java.time.Instant @@ -27,5 +27,6 @@ case class PipelineInfo( startedAt: Instant, finishedAt: Option[Instant], sparkApplicationId: Option[String], - failureException: Option[Throwable] + failureException: Option[Throwable], + pipelineNotificationFailures: Seq[PipelineNotificationFailure] ) diff --git a/pramen/core/src/main/scala/za/co/absa/pramen/core/state/PipelineStateImpl.scala b/pramen/core/src/main/scala/za/co/absa/pramen/core/state/PipelineStateImpl.scala index 1b8025fa6..d85159d93 100644 --- a/pramen/core/src/main/scala/za/co/absa/pramen/core/state/PipelineStateImpl.scala +++ b/pramen/core/src/main/scala/za/co/absa/pramen/core/state/PipelineStateImpl.scala @@ -106,7 +106,8 @@ class PipelineStateImpl(implicit conf: Config, notificationBuilder: Notification startedInstant, finishedInstant, sparkAppId, - appException + appException, + pipelineNotificationFailures.toSeq ), isFinished, exitedNormally, diff --git a/pramen/core/src/test/scala/za/co/absa/pramen/core/mocks/PipelineInfoFactory.scala b/pramen/core/src/test/scala/za/co/absa/pramen/core/mocks/PipelineInfoFactory.scala index 37ba66c63..894c2273d 100644 --- a/pramen/core/src/test/scala/za/co/absa/pramen/core/mocks/PipelineInfoFactory.scala +++ b/pramen/core/src/test/scala/za/co/absa/pramen/core/mocks/PipelineInfoFactory.scala @@ -17,7 +17,7 @@ package za.co.absa.pramen.core.mocks import za.co.absa.pramen.api.PipelineInfo -import za.co.absa.pramen.api.status.RuntimeInfo +import za.co.absa.pramen.api.status.{PipelineNotificationFailure, RuntimeInfo} import java.time.Instant @@ -28,7 +28,8 @@ object PipelineInfoFactory { startedAt: Instant = Instant.ofEpochSecond(1718609409), finishedAt: Option[Instant] = None, sparkApplicationId: Option[String] = Some("testid-12345"), - failureException: Option[Throwable] = None): PipelineInfo = { - PipelineInfo(pipelineName, environment, runtimeInfo, startedAt, finishedAt, sparkApplicationId, failureException) + failureException: Option[Throwable] = None, + pipelineNotificationFailures: Seq[PipelineNotificationFailure] = Seq.empty): PipelineInfo = { + PipelineInfo(pipelineName, environment, runtimeInfo, startedAt, finishedAt, sparkApplicationId, failureException, pipelineNotificationFailures) } } diff --git a/pramen/extras/src/test/scala/za/co/absa/pramen/extras/notification/EcsPipelineNotificationTargetSuite.scala b/pramen/extras/src/test/scala/za/co/absa/pramen/extras/notification/EcsPipelineNotificationTargetSuite.scala index f31747b12..0320bc883 100644 --- a/pramen/extras/src/test/scala/za/co/absa/pramen/extras/notification/EcsPipelineNotificationTargetSuite.scala +++ b/pramen/extras/src/test/scala/za/co/absa/pramen/extras/notification/EcsPipelineNotificationTargetSuite.scala @@ -55,7 +55,7 @@ class EcsPipelineNotificationTargetSuite extends AnyWordSpec { val task3 = TestPrototypes.taskNotification.copy(jobName = "Job 3", outputTable = metaTableDef3) notificationTarget.sendNotification( - PipelineInfo("Dummy", "DEV", RuntimeInfo(), Instant.now, None, None, None), + PipelineInfo("Dummy", "DEV", RuntimeInfo(), Instant.now, None, None, None, Seq.empty), Seq(task1, task2, task3), CustomNotification(Seq.empty, Seq.empty) )