diff --git a/app/services/FaciaPress.scala b/app/services/FaciaPress.scala index 8d775049a96..d8b27903fb4 100644 --- a/app/services/FaciaPress.scala +++ b/app/services/FaciaPress.scala @@ -45,7 +45,14 @@ class FaciaPressTopic(val config: ApplicationConfiguration) { maybeTopic match { case Some(topic) if collectionIds.nonEmpty => import SNSTopics._ - val event = Json.toJson(job).as[JsObject] ++ JsObject(Map("collectionIds" -> Json.toJson(collectionIds))) + val fanoutPayload = Json.toJson(Map( + "collectionIds" -> Json.toJson(collectionIds), + "timestamp" -> Json.toJson(System.currentTimeMillis()), + )).toString() + val event = Json.toJson(job).as[JsObject] ++ JsObject(Map( + "collectionIds" -> Json.toJson(collectionIds), + "fanoutPayload" -> Json.toJson(fanoutPayload), + )) topic.client.publishMessageFuture(topic.topicArn, Json.stringify(event)) case Some(topic) => @@ -66,6 +73,8 @@ class FaciaPress(val faciaPressTopic: FaciaPressTopic, val configAgent: ConfigAg path <- configAgent.getConfigsUsingCollectionId(id) } yield path + val pathToCollectionIdsLookup = configAgent.getConfigCollectionMap + def sendEvents(pressType: PressType) = Future.traverse( paths.filter(_ => pressType match { case Live => pressCommand.live @@ -74,7 +83,11 @@ class FaciaPress(val faciaPressTopic: FaciaPressTopic, val configAgent: ConfigAg ) { path => val event = PressJob(FrontPath(path), pressType, forceConfigUpdate = pressCommand.forceConfigUpdate) - val publishResultFuture = faciaPressTopic.publish(event, pressCommand.collectionIds) + val collectionIdsRelevantToPath = pressCommand.collectionIds.filter(collectionId => { + pathToCollectionIdsLookup.get(path).exists(_.contains(collectionId)) + }) + + val publishResultFuture = faciaPressTopic.publish(event, collectionIdsRelevantToPath) publishResultFuture.onComplete { case Failure(error) =>