blob: 664809097e0135ee16bba49df01c728177b95e35 [file] [log] [blame]
/**
* 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.
*/
syntax = "proto3";
import "common.proto";
import "stream.proto";
package bookkeeper.proto.storage;
option java_multiple_files = true;
option java_package = "org.apache.bookkeeper.stream.proto.storage";
//
// Requests
//
enum StatusCode {
SUCCESS = 0;
FAILURE = 1;
// 4xx: client errors
BAD_REQUEST = 400;
ILLEGAL_OP = 403;
// 5xx: server errors
INTERNAL_SERVER_ERROR = 500;
NOT_IMPLEMENTED = 501;
// 6xx: unexpected
UNEXPECTED = 600;
// 9xx: revisions, versions
BAD_VERSION = 900;
BAD_REVISION = 901;
// ROOT and META RANGE related
// 20xx: Namespace Related
INVALID_NAMESPACE_NAME = 2000;
NAMESPACE_EXISTS = 2001;
NAMESPACE_NOT_FOUND = 2002;
// 21xx: Stream Related
INVALID_STREAM_NAME = 2100;
STREAM_EXISTS = 2101;
STREAM_NOT_FOUND = 2102;
INVALID_STREAMSNAPSHOT_NAME = 2103;
STREAMSNAPSHOT_EXISTS = 2104;
STREAMSNAPSHOT_NOT_FOUND = 2105;
// 3xxx: GROUP related
WRONG_GROUP_LOCATION = 3000;
INVALID_GROUP_ID = 3001;
GROUP_EXISTS = 3002;
GROUP_NOT_FOUND = 3003;
STALE_GROUP_INFO = 3004;
// 6xxx: Table related
INVALID_KEY = 6000;
KEY_EXISTS = 6001;
KEY_NOT_FOUND = 6002;
}
//
// Meta Range Service
//
message GetActiveRangesRequest {
int64 stream_id = 1;
// create stream if not exists
stream.StreamProperties stream_props = 2;
}
message GetActiveRangesResponse {
StatusCode code = 1;
repeated RelatedRanges ranges = 2;
}
enum RelationType {
CHILDREN = 0;
PARENTS = 1;
CHILDREN_PARENTS = 2;
}
message RelatedRanges {
stream.RangeProperties props = 1;
RelationType type = 2;
repeated int64 related_ranges = 3;
}
// public service for other operations in range server
service MetaRangeService {
rpc GetActiveRanges(GetActiveRangesRequest) returns (GetActiveRangesResponse);
}
//
// Root Range Services
//
message CreateNamespaceRequest {
string name = 1;
stream.NamespaceConfiguration ns_conf = 2;
}
message CreateNamespaceResponse {
StatusCode code = 1;
stream.NamespaceProperties ns_props = 2;
}
message DeleteNamespaceRequest {
string name = 1;
}
message DeleteNamespaceResponse {
StatusCode code = 1;
}
message GetNamespaceRequest {
string name = 1;
}
message GetNamespaceResponse {
StatusCode code = 1;
stream.NamespaceProperties ns_props = 2;
}
message CreateStreamRequest {
string ns_name = 1;
string name = 2;
stream.StreamConfiguration stream_conf = 3;
}
message CreateStreamResponse {
StatusCode code = 1;
stream.StreamProperties stream_props = 2;
}
message DeleteStreamRequest {
string ns_name = 1;
string name = 2;
}
message DeleteStreamResponse {
StatusCode code = 1;
}
message GetStreamRequest {
oneof id {
stream.StreamName stream_name = 1;
int64 stream_id = 2;
}
}
message GetStreamResponse {
StatusCode code = 1;
stream.StreamProperties stream_props = 2;
}
// public service for metadata services
service RootRangeService {
//
// Namespace Methods
//
rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse);
rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse);
rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse);
//
// Stream Methods
//
rpc CreateStream(CreateStreamRequest) returns (CreateStreamResponse);
rpc DeleteStream(DeleteStreamRequest) returns (DeleteStreamResponse);
rpc GetStream(GetStreamRequest) returns (GetStreamResponse);
}
//
// StorageContainerService
//
message StorageContainerEndpoint {
int64 storage_container_id = 1;
int64 revision = 2;
common.Endpoint rw_endpoint = 3;
repeated common.Endpoint ro_endpoint = 4;
}
message OneStorageContainerEndpointRequest {
int64 storage_container = 1;
int64 revision = 2;
}
message GetStorageContainerEndpointRequest {
repeated OneStorageContainerEndpointRequest requests = 1;
}
message OneStorageContainerEndpointResponse {
StatusCode status_code = 1;
StorageContainerEndpoint endpoint = 2;
}
message GetStorageContainerEndpointResponse {
StatusCode status_code = 1;
repeated OneStorageContainerEndpointResponse responses = 2;
}
// A general range server service
service StorageContainerService {
// Get the storage container endpoints
rpc GetStorageContainerEndpoint(GetStorageContainerEndpointRequest) returns (GetStorageContainerEndpointResponse);
}