Skip to content

Commit 4c24f24

Browse files
committed
HDDS-2072. Make StorageContainerLocationProtocolService message based
Contributed by Elek, Marton.
1 parent 1303255 commit 4c24f24

File tree

8 files changed

+630
-532
lines changed

8 files changed

+630
-532
lines changed

hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java

Lines changed: 198 additions & 213 deletions
Large diffs are not rendered by default.

hadoop-hdds/common/src/main/proto/ScmBlockLocationProtocol.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ option java_package = "org.apache.hadoop.hdds.protocol.proto";
2626
option java_outer_classname = "ScmBlockLocationProtocolProtos";
2727
option java_generic_services = true;
2828
option java_generate_equals_and_hash = true;
29-
package hadoop.hdds;
29+
package hadoop.hdds.block;
3030

3131
import "hdds.proto";
3232

hadoop-hdds/common/src/main/proto/StorageContainerLocationProtocol.proto

Lines changed: 92 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,100 @@ option java_package = "org.apache.hadoop.hdds.protocol.proto";
2626
option java_outer_classname = "StorageContainerLocationProtocolProtos";
2727
option java_generic_services = true;
2828
option java_generate_equals_and_hash = true;
29-
package hadoop.hdds;
29+
package hadoop.hdds.container;
3030

3131
import "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
*/
237327
service 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

Comments
 (0)