Support multiple/dynamic remotes for standard CAS protocol methods
Context
The LocalCAS protocol allows clients to work with multiple remotes dynamically configured using GetInstanceNameForRemote()
. These dynamic remotes can currently not be used for standard CAS protocol methods such as FindMissingBlobs()
(also mentioned in !55 (merged)). BuildStream will use this to completely drop direct communication with remote CAS servers.
Task Description
The plan is to create one LocalCasProxyInstance
object per remote and then add dispatch by instance name for dynamic remotes to CasService
, CasRemoteExecutionServicer
and CasBytestreamServicer
.
For architectural consistency between standard CAS protocol and LocalCAS protocol implementations, we should also change LocalCasServiceImplementation
to be just a dispatcher and move the actual functionality to LocalCas*Instance
.