private[this] def resolveTaskSet()

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