/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * These .proto interfaces are private and unstable. * Please see http://wiki.apache.org/hadoop/Compatibility * for what changes are allowed for a *unstable* .proto interface. */ option java_package = "org.apache.hadoop.ozone.protocol.proto"; option java_outer_classname = "ScmBlockLocationProtocolProtos"; option java_generic_services = true; option java_generate_equals_and_hash = true; package hadoop.hdfs; import "hdfs.proto"; import "Ozone.proto"; // SCM Block protocol /** * keys - batch of block keys to find */ message GetScmBlockLocationsRequestProto { repeated string keys = 1; } /** * locatedBlocks - for each requested hash, nodes that currently host the * container for that object key hash */ message GetScmBlockLocationsResponseProto { repeated ScmLocatedBlockProto locatedBlocks = 1; } /** * Holds the nodes that currently host the blocks for a key. */ message ScmLocatedBlockProto { required string key = 1; required hadoop.hdfs.ozone.Pipeline pipeline = 2; } /** * Request send to SCM asking allocate block of specified size. */ message AllocateScmBlockRequestProto { required uint64 size = 1; } /** * keys - batch of block keys to deleted */ message DeleteScmBlocksRequestProto { repeated string keys = 1; } /** * deletedKeys - keys that are deleted successfully */ message DeleteScmBlocksResponseProto { repeated DeleteScmBlockResult results = 1; } message DeleteScmBlockResult { enum Result { success = 1; chillMode = 2; errorNotFound = 3; unknownFailure = 4; } required Result result = 1; required string key = 2; } /** * Reply from SCM indicating that the container. */ message AllocateScmBlockResponseProto { enum Error { success = 1; errorNotEnoughSpace = 2; errorSizeTooBig = 3; unknownFailure = 4; } required Error errorCode = 1; required string key = 2; required hadoop.hdfs.ozone.Pipeline pipeline = 3; required bool createContainer = 4; optional string errorMessage = 5; } /** * Protocol used from KeySpaceManager to StorageContainerManager. * See request and response messages for details of the RPC calls. */ service ScmBlockLocationProtocolService { /** * Find the set of nodes that currently host the block, as * identified by the key. This method supports batch lookup by * passing multiple keys. */ rpc getScmBlockLocations(GetScmBlockLocationsRequestProto) returns (GetScmBlockLocationsResponseProto); /** * Creates a block entry in SCM. */ rpc allocateScmBlock(AllocateScmBlockRequestProto) returns (AllocateScmBlockResponseProto); /** * Deletes one or multiple block keys from SCM. */ rpc deleteScmBlocks(DeleteScmBlocksRequestProto) returns (DeleteScmBlocksResponseProto); }