syntax = "proto3"; option cc_enable_arenas = true; package Ydb.Cms; option go_package = "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Cms"; option java_package = "tech.ydb.cms"; import "protos/ydb_operation.proto"; // A set of uniform storage units. // Single storage unit can be thought of as a reserved part of a RAID. message StorageUnits { // Required. Kind of the storage unit. Determine guarantees // for all main unit parameters: used hard disk type, capacity // throughput, IOPS etc. string unit_kind = 1; // Required. The number of units in this set. uint64 count = 2; } // A set of uniform computational units. message ComputationalUnits { // Required. Kind of the computational unit. Determine main // unit parameters like available memory, CPU, etc. string unit_kind = 1; // The availability zone all unit should be located in. // By default any availability zone can be used. string availability_zone = 2; // Required. The number of units in this set. uint64 count = 3; } // Computational unit allocated for database. Used to register // externally allocated computational resources in CMS. message AllocatedComputationalUnit { // Required. Computational unit host name. string host = 1; // Required. Computational unit port. uint32 port = 2; // Required. Computational unit kind. string unit_kind = 3; } // A set of computational and storage resources. message Resources { // Storage resources. repeated StorageUnits storage_units = 1; // Computational resources. repeated ComputationalUnits computational_units = 2; } message ServerlessResources { // Full path to shared database's home dir whose resources will be used. string shared_database_path = 1; } message DatabaseOptions { // Do not initialize services required for transactions processing. bool disable_tx_service = 1; // Old-style database, do not create external schemeshard for database bool disable_external_subdomain = 2; // Transaction plan resolution in milliseconds uint32 plan_resolution = 3; } // A set of quotas for schema operations message SchemaOperationQuotas { // A single quota based on leaky bucket message LeakyBucket { // Bucket size, e.g. <1000> per day double bucket_size = 1; // Bucket duration in seconds, e.g. 1000 per uint64 bucket_seconds = 2; } // Leaky bucket based quotas repeated LeakyBucket leaky_bucket_quotas = 1; } // A set of quotas for the database message DatabaseQuotas { // A maximum data size in bytes, new data will be rejected when exceeded uint64 data_size_hard_quota = 1; // An optional size in bytes (lower than data_size_hard_quota). When data // size becomes lower than this value new data ingestion is re-enabled // again. This is useful to help avoid database from rapidly entering and // exiting from the overloaded state. uint64 data_size_soft_quota = 2; // A maximum count of shards in all data streams. uint64 data_stream_shards_quota = 3; // A maximum storage that will be reserved for all data stream shards. uint64 data_stream_reserved_storage_quota = 5; // A minimum value of `TtlSettings.run_interval_seconds` that can be specified. // Default is 1800 (15 minutes). uint32 ttl_min_run_internal_seconds = 4; } // Request to create a new database. For successfull creation // specified database shouldn't exist. At least one storage // unit should be requested for the database. message CreateDatabaseRequest { Ydb.Operations.OperationParams operation_params = 1; // Required. Full path to database's home dir. Used as database ID. string path = 2; oneof resources_kind { // Resources to allocate for database by CMS. Resources resources = 3; // Shared resources can be used by serverless databases. Resources shared_resources = 6; // If specified, the created database will be "serverless". ServerlessResources serverless_resources = 7; } // Additional database options. DatabaseOptions options = 4; // Attach attributes to database. map attributes = 5; // Optional quotas for schema operations SchemaOperationQuotas schema_operation_quotas = 8; // Optional idempotency key string idempotency_key = 9; // Optional quotas for the database DatabaseQuotas database_quotas = 10; } message CreateDatabaseResponse { Ydb.Operations.Operation operation = 1; } // Get current database status. message GetDatabaseStatusRequest { // Required. Full path to database's home dir. string path = 1; // Operation parameters Ydb.Operations.OperationParams operation_params = 2; } message GetDatabaseStatusResponse { // operation.result holds GetDatabaseStatusResult Ydb.Operations.Operation operation = 1; } message GetDatabaseStatusResult { enum State { STATE_UNSPECIFIED = 0; CREATING = 1; RUNNING = 2; REMOVING = 3; PENDING_RESOURCES = 4; CONFIGURING = 5; } // Full path to database's home dir. string path = 1; // Current database state. State state = 2; oneof resources_kind { // Database resources requested for allocation. Resources required_resources = 3; Resources required_shared_resources = 7; ServerlessResources serverless_resources = 8; } // Database resources allocated by CMS. Resources allocated_resources = 4; // Externally allocated database resources registered in CMS. repeated AllocatedComputationalUnit registered_resources = 5; // Current database generation. Incremented at each successful // alter request. uint64 generation = 6; // Current quotas for schema operations SchemaOperationQuotas schema_operation_quotas = 9; // Current quotas for the database DatabaseQuotas database_quotas = 10; } // Change resources allocated for database. message AlterDatabaseRequest { // Required. Full path to database's home dir. string path = 1; // Additional computational units to allocate for database. repeated ComputationalUnits computational_units_to_add = 2; // Computational units to deallocate. repeated ComputationalUnits computational_units_to_remove = 3; // Additional storage units to allocate for database. repeated StorageUnits storage_units_to_add = 4; // Externally allocated computational units to register for database. repeated AllocatedComputationalUnit computational_units_to_register = 5; // Externally allocated computational units to deregister. repeated AllocatedComputationalUnit computational_units_to_deregister = 6; // Operation parameters. Ydb.Operations.OperationParams operation_params = 7; // Current generation of altered database. uint64 generation = 8; // Change quotas for schema operations SchemaOperationQuotas schema_operation_quotas = 9; // Optional idempotency key string idempotency_key = 10; // Change quotas for the database DatabaseQuotas database_quotas = 11; // Alter attributes. Leave the value blank to drop an attribute. map alter_attributes = 12; } message AlterDatabaseResponse { Ydb.Operations.Operation operation = 1; } // List all databases known by CMS. message ListDatabasesRequest { // Operation parameters Ydb.Operations.OperationParams operation_params = 1; } message ListDatabasesResponse { // operation.result holds ListDatabasesResult Ydb.Operations.Operation operation = 1; } message ListDatabasesResult { repeated string paths = 1; } // Completely remove database and all his data. message RemoveDatabaseRequest { // Required. Full path to database's home dir. string path = 1; Ydb.Operations.OperationParams operation_params = 2; } message RemoveDatabaseResponse { Ydb.Operations.Operation operation = 1; } message StorageUnitDescription { string kind = 1; map labels = 2; } message AvailabilityZoneDescription { string name = 1; map labels = 2; } message ComputationalUnitDescription { string kind = 1; map labels = 2; repeated string allowed_availability_zones = 3; } message DescribeDatabaseOptionsRequest { // Operation parameters Ydb.Operations.OperationParams operation_params = 1; } message DescribeDatabaseOptionsResponse { // operation.result holds DescribeDatabaseOptionsResult Ydb.Operations.Operation operation = 1; } message DescribeDatabaseOptionsResult { repeated StorageUnitDescription storage_units = 1; repeated AvailabilityZoneDescription availability_zones = 2; repeated ComputationalUnitDescription computational_units = 3; }