123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- /**
- * 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 = "KeySpaceManagerProtocolProtos";
- option java_generic_services = true;
- option java_generate_equals_and_hash = true;
- package hadoop.hdfs.ozone;
- /**
- This is file contains the protocol to communicate with
- Ozone key space manager. Ozone KSM manages the namespace for ozone.
- This is similar to Namenode for Ozone.
- */
- import "hdfs.proto";
- import "Ozone.proto";
- enum Status {
- OK = 1;
- VOLUME_NOT_UNIQUE = 2;
- VOLUME_NOT_FOUND = 3;
- VOLUME_NOT_EMPTY = 4;
- VOLUME_ALREADY_EXISTS = 5;
- USER_NOT_FOUND = 6;
- USER_TOO_MANY_VOLUMES = 7;
- BUCKET_NOT_FOUND = 8;
- BUCKET_NOT_EMPTY = 9;
- BUCKET_ALREADY_EXISTS = 10;
- KEY_ALREADY_EXISTS = 11;
- KEY_NOT_FOUND = 12;
- ACCESS_DENIED = 13;
- INTERNAL_ERROR = 14;
- }
- message VolumeInfo {
- required string adminName = 1;
- required string ownerName = 2;
- required string volume = 3;
- optional uint64 quotaInBytes = 4;
- repeated KeyValue metadata = 5;
- repeated OzoneAclInfo volumeAcls = 6;
- }
- /**
- Creates a volume
- */
- message CreateVolumeRequest {
- required VolumeInfo volumeInfo = 1;
- }
- message CreateVolumeResponse {
- required Status status = 1;
- }
- message VolumeList {
- repeated string volumeNames = 1;
- }
- /**
- Changes the Volume Properties -- like ownership and quota for a volume.
- */
- message SetVolumePropertyRequest {
- required string volumeName = 1;
- optional string ownerName = 2;
- optional uint64 quotaInBytes = 3;
- }
- message SetVolumePropertyResponse {
- required Status status = 1;
- }
- /**
- * Checks if the user has specified permissions for the volume
- */
- message CheckVolumeAccessRequest {
- required string volumeName = 1;
- required OzoneAclInfo userAcl = 2;
- }
- message CheckVolumeAccessResponse {
- required Status status = 1;
- }
- /**
- Returns information about a volume.
- */
- message InfoVolumeRequest {
- required string volumeName = 1;
- }
- message InfoVolumeResponse {
- required Status status = 1;
- optional VolumeInfo volumeInfo = 2;
- }
- /**
- Deletes an existing volume.
- */
- message DeleteVolumeRequest {
- required string volumeName = 1;
- }
- message DeleteVolumeResponse {
- required Status status = 1;
- }
- /**
- List Volumes -- List all volumes in the cluster or by user.
- */
- message ListVolumeRequest {
- enum Scope {
- USER_VOLUMES = 1; // User volumes -- called by user
- VOLUMES_BY_USER = 2; // User volumes - called by Admin
- VOLUMES_BY_CLUSTER = 3; // All volumes in the cluster
- }
- required Scope scope = 1;
- required string volumeName = 2;
- optional string userName = 3;
- optional string prefix = 4;
- optional string prevKey = 5;
- optional uint64 maxKeys = 6;
- }
- message ListVolumeResponse {
- enum Status {
- OK = 1;
- ACCESS_DENIED = 2;
- REQUIRED_ARG_MISSING = 3;
- }
- required Status status = 1;
- repeated VolumeInfo volumeInfo = 2;
- }
- message BucketInfo {
- required string volumeName = 1;
- required string bucketName = 2;
- repeated OzoneAclInfo acls = 3;
- required bool isVersionEnabled = 4 [default = false];
- required StorageTypeProto storageType = 5 [default = DISK];
- }
- message BucketArgs {
- required string volumeName = 1;
- required string bucketName = 2;
- repeated OzoneAclInfo addAcls = 3;
- repeated OzoneAclInfo removeAcls = 4;
- optional bool isVersionEnabled = 5;
- optional StorageTypeProto storageType = 6;
- }
- message OzoneAclInfo {
- enum OzoneAclType {
- USER = 1;
- GROUP = 2;
- WORLD = 3;
- }
- enum OzoneAclRights {
- READ = 1;
- WRITE = 2;
- READ_WRITE = 3;
- }
- required OzoneAclType type = 1;
- required string name = 2;
- required OzoneAclRights rights = 3;
- }
- message CreateBucketRequest {
- required BucketInfo bucketInfo = 1;
- }
- message CreateBucketResponse {
- required Status status = 1;
- }
- message InfoBucketRequest {
- required string volumeName = 1;
- required string bucketName = 2;
- }
- message InfoBucketResponse {
- required Status status = 1;
- optional BucketInfo bucketInfo = 2;
- }
- message KeyArgs {
- required string volumeName = 1;
- required string bucketName = 2;
- required string keyName = 3;
- optional uint64 dataSize = 4;
- }
- message KeyInfo {
- required string volumeName = 1;
- required string bucketName = 2;
- required string keyName = 3;
- required uint64 dataSize = 4;
- required string blockKey = 5;
- required string containerName = 6;
- required bool shouldCreateContainer = 7;
- }
- message LocateKeyRequest {
- required KeyArgs keyArgs = 1;
- }
- message LocateKeyResponse {
- required Status status = 1;
- optional KeyInfo keyInfo = 2;
- }
- message SetBucketPropertyRequest {
- required BucketArgs bucketArgs = 1;
- }
- message SetBucketPropertyResponse {
- required Status status = 1;
- }
- message DeleteBucketRequest {
- required string volumeName = 1;
- required string bucketName = 2;
- }
- message DeleteBucketResponse {
- required Status status = 1;
- }
- /**
- The KSM service that takes care of Ozone namespace.
- */
- service KeySpaceManagerService {
- /**
- Creates a Volume.
- */
- rpc createVolume(CreateVolumeRequest)
- returns(CreateVolumeResponse);
- /**
- Allows modificiation of volume properties.
- */
- rpc setVolumeProperty(SetVolumePropertyRequest)
- returns (SetVolumePropertyResponse);
- /**
- Checks if the specified volume is accesible by the specified user.
- */
- rpc checkVolumeAccess(CheckVolumeAccessRequest)
- returns (CheckVolumeAccessResponse);
- /**
- Gets Volume information.
- */
- rpc infoVolume(InfoVolumeRequest)
- returns(InfoVolumeResponse);
- /**
- Deletes a volume if it is empty.
- */
- rpc deleteVolume(DeleteVolumeRequest)
- returns (DeleteVolumeResponse);
- /**
- Lists Volumes
- */
- rpc listVolumes(ListVolumeRequest)
- returns (ListVolumeResponse);
- /**
- Creates a Bucket.
- */
- rpc createBucket(CreateBucketRequest)
- returns(CreateBucketResponse);
- /**
- Get Bucket information.
- */
- rpc infoBucket(InfoBucketRequest)
- returns(InfoBucketResponse);
- /**
- Sets bucket properties.
- */
- rpc setBucketProperty(SetBucketPropertyRequest)
- returns(SetBucketPropertyResponse);
- /**
- Get key.
- */
- rpc createKey(LocateKeyRequest)
- returns(LocateKeyResponse);
- /**
- Look up for an existing key.
- */
- rpc lookupKey(LocateKeyRequest)
- returns(LocateKeyResponse);
- /**
- Delete an existing key.
- */
- rpc deleteKey(LocateKeyRequest)
- returns(LocateKeyResponse);
- /**
- Deletes a bucket from volume if it is empty.
- */
- rpc deleteBucket(DeleteBucketRequest)
- returns (DeleteBucketResponse);
- }
|