Package

agora.exec

client

Permalink

package client

Visibility
  1. Public
  2. All

Type Members

  1. case class ExecutionClient(client: RestClient, defaultFrameLength: Int)(implicit uploadTimeout: FiniteDuration) extends UploadClient with FailFastCirceSupport with AutoCloseable with Product with Serializable

    Permalink

    A client of the ExecutionRoutes and UploadRoutes

  2. case class LocalRunner(workDir: Option[Path] = None)(implicit ec: ExecutionContext) extends ProcessRunner with StrictLogging with Product with Serializable

    Permalink

    Something which can execute RunProcess

  3. trait ProcessRunner extends AnyRef

    Permalink

    represents something which can be run, either locally or remotely.

    represents something which can be run, either locally or remotely. Just adds the concept of an 'upload' to scala sys process really

  4. case class RemoteRunner(exchange: ExchangeClient, defaultFrameLength: Int, requestWorkOnFailure: Boolean, keyOpt: Option[SubscriptionKey] = None)(implicit uploadTimeout: FiniteDuration) extends ProcessRunner with AutoCloseable with FailFastCirceSupport with LazyLogging with Product with Serializable

    Permalink

    A RemoteRunner is a client of the execution routes which goes via the exchange.

    A RemoteRunner is a client of the execution routes which goes via the exchange.

    This wouldn't typically require such dedicated code, but we have to consider upload scenarios where we want to first submit a job which selects a worker, then upload the data to that worker, and subsequently request that worker

  5. case class SelectionOutput(subscription: SubscriptionKey, location: HostLocation, runner: RemoteRunner, uploader: UploadClient, result: Future[RunProcessResult]) extends UploadClient with Product with Serializable

    Permalink

    A data structure containing the result of an execution via the RemoteRunner.

    A data structure containing the result of an execution via the RemoteRunner.

    The use-case driving this is to have a consistent, 'sticky-session' type workflow with a single worker which could still be either load-balanced via the exchange or targeted directly for subsequent requests.

    The workflow used to produce a 'SelectionOutput' is this:

    1) a job is submitted to the agora.api.exchange.Exchange 2) the job gets matched with some worker taking subscriptions. 3) we want to remember that worker, as well as proceed with executing the job from step 1

    The SelectionOutput is the 'remembering' of that worker -- allowing us to submit using the same subscription (runner)

    subscription

    the subscription id of the remote runner

    runner

    the remote runner which will match a worker based on the subscription

    uploader

    an uploader which can be used to upload data to the worker represented by the runner

    result

    the result of the execution

  6. trait UploadClient extends FailFastCirceSupport

    Permalink

    Something with can upload data via a RestClient

  7. case class WithEnvironmentProcessRunner[T <: ProcessRunner](underlying: T, defaultEnv: Map[String, String]) extends ProcessRunner with Product with Serializable

    Permalink

Value Members

  1. object ExecutionClient extends RequestBuilding with Serializable

    Permalink
  2. object ProcessRunner

    Permalink
  3. object RemoteRunner extends RequestBuilding with Serializable

    Permalink
  4. object UploadClient extends RequestBuilding

    Permalink

Ungrouped