@@ -26,10 +26,100 @@ option java_package = "org.apache.hadoop.hdds.protocol.proto";
2626option java_outer_classname = "StorageContainerLocationProtocolProtos" ;
2727option java_generic_services = true ;
2828option java_generate_equals_and_hash = true ;
29- package hadoop.hdds ;
29+ package hadoop.hdds.container ;
3030
3131import "hdds.proto" ;
3232
33+ /**
34+ All functions are dispatched as Request/Response under Ozone.
35+ if you add newe functions, please add them using same pattern.
36+ */
37+ message ScmContainerLocationRequest {
38+ required Type cmdType = 1 ; // Type of the command
39+
40+ // A string that identifies this command, we generate Trace ID in Ozone
41+ // frontend and this allows us to trace that command all over ozone.
42+ optional string traceID = 2 ;
43+
44+ optional ContainerRequestProto containerRequest = 6 ;
45+ optional GetContainerRequestProto getContainerRequest = 7 ;
46+ optional GetContainerWithPipelineRequestProto getContainerWithPipelineRequest = 8 ;
47+ optional SCMListContainerRequestProto scmListContainerRequest = 9 ;
48+ optional SCMDeleteContainerRequestProto scmDeleteContainerRequest = 10 ;
49+ optional NodeQueryRequestProto nodeQueryRequest = 11 ;
50+ optional ObjectStageChangeRequestProto objectStageChangeRequest = 12 ;
51+ optional PipelineRequestProto pipelineRequest = 13 ;
52+ optional ListPipelineRequestProto listPipelineRequest = 14 ;
53+ optional ActivatePipelineRequestProto activatePipelineRequest = 15 ;
54+ optional DeactivatePipelineRequestProto deactivatePipelineRequest = 16 ;
55+ optional ClosePipelineRequestProto closePipelineRequest = 17 ;
56+ optional GetScmInfoRequestProto getScmInfoRequest = 18 ;
57+ optional InSafeModeRequestProto inSafeModeRequest = 19 ;
58+ optional ForceExitSafeModeRequestProto forceExitSafeModeRequest = 20 ;
59+ optional StartReplicationManagerRequestProto startReplicationManagerRequest = 21 ;
60+ optional StopReplicationManagerRequestProto stopReplicationManagerRequest = 22 ;
61+ optional ReplicationManagerStatusRequestProto seplicationManagerStatusRequest = 23 ;
62+
63+ }
64+
65+ message ScmContainerLocationResponse {
66+ required Type cmdType = 1 ; // Type of the command
67+
68+ optional string traceID = 2 ;
69+
70+ optional bool success = 3 [default = true ];
71+
72+ optional string message = 4 ;
73+
74+ required Status status = 5 ;
75+
76+ optional ContainerResponseProto containerResponse = 6 ;
77+ optional GetContainerResponseProto getContainerResponse = 7 ;
78+ optional GetContainerWithPipelineResponseProto getContainerWithPipelineResponse = 8 ;
79+ optional SCMListContainerResponseProto scmListContainerResponse = 9 ;
80+ optional SCMDeleteContainerResponseProto scmDeleteContainerResponse = 10 ;
81+ optional NodeQueryResponseProto nodeQueryResponse = 11 ;
82+ optional ObjectStageChangeResponseProto objectStageChangeResponse = 12 ;
83+ optional PipelineResponseProto pipelineResponse = 13 ;
84+ optional ListPipelineResponseProto listPipelineResponse = 14 ;
85+ optional ActivatePipelineResponseProto activatePipelineResponse = 15 ;
86+ optional DeactivatePipelineResponseProto deactivatePipelineResponse = 16 ;
87+ optional ClosePipelineResponseProto closePipelineResponse = 17 ;
88+ optional GetScmInfoResponseProto getScmInfoResponse = 18 ;
89+ optional InSafeModeResponseProto inSafeModeResponse = 19 ;
90+ optional ForceExitSafeModeResponseProto forceExitSafeModeResponse = 20 ;
91+ optional StartReplicationManagerResponseProto startReplicationManagerResponse = 21 ;
92+ optional StopReplicationManagerResponseProto stopReplicationManagerResponse = 22 ;
93+ optional ReplicationManagerStatusResponseProto replicationManagerStatusResponse = 23 ;
94+ enum Status {
95+ OK = 1 ;
96+ CONTAINER_ALREADY_EXISTS = 2 ;
97+ CONTAINER_IS_MISSING = 3 ;
98+ }
99+ }
100+
101+ enum Type {
102+
103+ AllocateContainer = 1 ;
104+ GetContainer = 2 ;
105+ GetContainerWithPipeline = 3 ;
106+ ListContainer = 4 ;
107+ DeleteContainer = 5 ;
108+ QueryNode = 6 ;
109+ NotifyObjectStageChange = 7 ;
110+ AllocatePipeline = 8 ;
111+ ListPipelines = 9 ;
112+ ActivatePipeline = 10 ;
113+ DeactivatePipeline = 11 ;
114+ ClosePipeline = 12 ;
115+ GetScmInfo = 13 ;
116+ InSafeMode = 14 ;
117+ ForceExitSafeMode = 15 ;
118+ StartReplicationManager = 16 ;
119+ StopReplicationManager = 17 ;
120+ GetReplicationManagerStatus = 18 ;
121+ }
122+
33123/**
34124* Request send to SCM asking where the container should be created.
35125*/
@@ -235,97 +325,6 @@ message ReplicationManagerStatusResponseProto {
235325 * and response messages for details of the RPC calls.
236326 */
237327service StorageContainerLocationProtocolService {
328+ rpc submitRequest (ScmContainerLocationRequest ) returns (ScmContainerLocationResponse );
238329
239- /**
240- * Creates a container entry in SCM.
241- */
242- rpc allocateContainer (ContainerRequestProto ) returns (ContainerResponseProto );
243-
244- /**
245- * Returns the pipeline for a given container.
246- */
247- rpc getContainer (GetContainerRequestProto ) returns (GetContainerResponseProto );
248-
249- /**
250- * Returns the pipeline for a given container.
251- */
252- rpc getContainerWithPipeline (GetContainerWithPipelineRequestProto ) returns (GetContainerWithPipelineResponseProto );
253-
254- rpc listContainer (SCMListContainerRequestProto ) returns (SCMListContainerResponseProto );
255-
256- /**
257- * Deletes a container in SCM.
258- */
259- rpc deleteContainer (SCMDeleteContainerRequestProto ) returns (SCMDeleteContainerResponseProto );
260-
261- /**
262- * Returns a set of Nodes that meet a criteria.
263- */
264- rpc queryNode (NodeQueryRequestProto ) returns (NodeQueryResponseProto );
265-
266- /**
267- * Notify from client when begin or finish container or pipeline operations on datanodes.
268- */
269- rpc notifyObjectStageChange (ObjectStageChangeRequestProto ) returns (ObjectStageChangeResponseProto );
270-
271- /*
272- * Apis that Manage Pipelines.
273- *
274- * Pipelines are abstractions offered by SCM and Datanode that allows users
275- * to create a replication pipeline.
276- *
277- * These following APIs allow command line programs like SCM CLI to list
278- * and manage pipelines.
279- */
280-
281- /**
282- * Creates a replication pipeline.
283- */
284- rpc allocatePipeline (PipelineRequestProto )
285- returns (PipelineResponseProto );
286-
287- /**
288- * Returns the list of Pipelines managed by SCM.
289- */
290- rpc listPipelines (ListPipelineRequestProto )
291- returns (ListPipelineResponseProto );
292-
293- rpc activatePipeline (ActivatePipelineRequestProto )
294- returns (ActivatePipelineResponseProto );
295-
296- rpc deactivatePipeline (DeactivatePipelineRequestProto )
297- returns (DeactivatePipelineResponseProto );
298-
299- /**
300- * Closes a pipeline.
301- */
302- rpc closePipeline (ClosePipelineRequestProto )
303- returns (ClosePipelineResponseProto );
304-
305- /**
306- * Returns information about SCM.
307- */
308- rpc getScmInfo (GetScmInfoRequestProto )
309- returns (GetScmInfoResponseProto );
310-
311- /**
312- * Checks if SCM is in SafeMode.
313- */
314- rpc inSafeMode (InSafeModeRequestProto )
315- returns (InSafeModeResponseProto );
316-
317- /**
318- * Returns information about SCM.
319- */
320- rpc forceExitSafeMode (ForceExitSafeModeRequestProto )
321- returns (ForceExitSafeModeResponseProto );
322-
323- rpc startReplicationManager (StartReplicationManagerRequestProto )
324- returns (StartReplicationManagerResponseProto );
325-
326- rpc stopReplicationManager (StopReplicationManagerRequestProto )
327- returns (StopReplicationManagerResponseProto );
328-
329- rpc getReplicationManagerStatus (ReplicationManagerStatusRequestProto )
330- returns (ReplicationManagerStatusResponseProto );
331330}
0 commit comments