lukecwik commented on a change in pull request #11203: [BEAM-9577] Define and 
implement dependency-aware artifact staging service.
URL: https://github.com/apache/beam/pull/11203#discussion_r400606909
 
 

 ##########
 File path: model/job-management/src/main/proto/beam_artifact_api.proto
 ##########
 @@ -31,8 +31,92 @@ option java_outer_classname = "ArtifactApi";
 
 import "beam_runner_api.proto";
 
-// A service to stage artifacts for use in a Job.
+// A service to retrieve artifacts for use in a Job.
+service ArtifactRetrievalService {
+  // Resolves the given artifact references into one or more replacement
+  // artifact references (e.g. a Maven dependency into a (transitive) set
+  // of jars.
+  rpc ResolveArtifact(ResolveArtifactRequest) returns 
(ResolveArtifactResponse);
+
+  // Retrieves the given artifact as a stream of bytes.
+  rpc GetArtifact(GetArtifactRequest) returns (stream GetArtifactResponse);
+}
+
+// A service that allows the client to act as an ArtifactRetrievalService,
+// for a particular job with the server initiating requests and receiving
+// responses.
+//
+// A client calls the service with an ArtifactResponseWrapper that has the
+// staging token set, and thereafter responds to the server's requests.
 service ArtifactStagingService {
+  rpc ReverseArtifactRetrievalService(stream ArtifactResponseWrapper)
+      returns (stream ArtifactRequestWrapper);
+}
+
+// A request for artifact resolution.
+message ResolveArtifactRequest {
+  // A set of artifacts to (jointly) resolve.
+  repeated org.apache.beam.model.pipeline.v1.ArtifactInformation artifacts = 1;
+
+  // A set of artifact type urns that are understood by the requester.
+  // An attempt should be made to resolve the artifacts in terms of these URNs,
+  // but other URNs may be used as well with the understanding that they must
+  // be fetch-able as bytes via GetArtifact.
+  repeated string preferred_urns = 2;
 
 Review comment:
   We don't have to answer this question as part of this PR as it involves a 
much smaller subset so if you address the other parts then LGTM.
   
   Imagine we added the **deferred** artifact, would resolving be allowed to 
return the **deferred** artifact again?
   What would **Get** do for a **deferred** artifact?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to