A client of the ExecutionRoutes and UploadRoutes
Something which can execute RunProcess
represents something which can be run, either locally or remotely.
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
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)
the subscription id of the remote runner
the remote runner which will match a worker based on the subscription
an uploader which can be used to upload data to the worker represented by the runner
the result of the execution
Something with can upload data via a RestClient
represents something which can be run, either locally or remotely. Just adds the concept of an 'upload' to scala sys process really