in discovery-aws-api-async/src/main/scala/org/apache/pekko/discovery/awsapi/ecs/AsyncEcsTaskSetDiscovery.scala [133:167]
private[this] def resolveTaskSet(ecsClient: EcsAsyncClient, cluster: String, taskArn: String)(
implicit ec: ExecutionContext): Future[Option[TaskSet]] =
ecsClient.describeTasks(
DescribeTasksRequest.builder().cluster(cluster).tasks(taskArn).include(TaskField.TAGS).build()).asScala.map(
_.tasks().asScala.headOption).map(_.map(task => TaskSet(task.startedBy())))
private[this] def listTaskArns(
ecsClient: EcsAsyncClient,
cluster: String,
taskSet: TaskSet,
pageTaken: Option[String] = None,
accumulator: Seq[String] = Seq.empty)(implicit ec: ExecutionContext): Future[Seq[String]] =
for {
listTasksResponse <- ecsClient.listTasks(
ListTasksRequest
.builder()
.cluster(cluster)
.startedBy(taskSet.value)
.nextToken(pageTaken.orNull)
.desiredStatus(DesiredStatus.RUNNING)
.build()).asScala
accumulatedTasksArns = accumulator ++ listTasksResponse.taskArns().asScala
taskArns <- listTasksResponse.nextToken() match {
case null =>
Future.successful(accumulatedTasksArns)
case nextPageToken =>
listTaskArns(
ecsClient,
cluster,
taskSet,
Some(nextPageToken),
accumulatedTasksArns)
}
} yield taskArns