@@ -174,6 +174,71 @@ const TScaleRecommenderPolicies& TGetDatabaseStatusResult::GetScaleRecommenderPo
174
174
return ScaleRecommenderPolicies_;
175
175
}
176
176
177
+ void TGetDatabaseStatusResult::SerializeTo (Ydb::Cms::CreateDatabaseRequest& request) const {
178
+ request.set_path (Path_);
179
+ if (std::holds_alternative<NCms::TResources>(ResourcesKind_)) {
180
+ const auto & resources = std::get<NCms::TResources>(ResourcesKind_);
181
+ for (const auto & storageUnit : resources.StorageUnits ) {
182
+ auto * protoUnit = request.mutable_resources ()->add_storage_units ();
183
+ protoUnit->set_unit_kind (storageUnit.UnitKind );
184
+ protoUnit->set_count (storageUnit.Count );
185
+ }
186
+ for (const auto & computationalUnit : resources.ComputationalUnits ) {
187
+ auto * protoUnit = request.mutable_resources ()->add_computational_units ();
188
+ protoUnit->set_unit_kind (computationalUnit.UnitKind );
189
+ protoUnit->set_count (computationalUnit.Count );
190
+ protoUnit->set_availability_zone (computationalUnit.AvailabilityZone );
191
+ }
192
+ } else if (std::holds_alternative<NCms::TSharedResources>(ResourcesKind_)) {
193
+ const auto & resources = std::get<NCms::TSharedResources>(ResourcesKind_);
194
+ for (const auto & storageUnit : resources.StorageUnits ) {
195
+ auto * protoUnit = request.mutable_shared_resources ()->add_storage_units ();
196
+ protoUnit->set_unit_kind (storageUnit.UnitKind );
197
+ protoUnit->set_count (storageUnit.Count );
198
+ }
199
+ for (const auto & computationalUnit : resources.ComputationalUnits ) {
200
+ auto * protoUnit = request.mutable_shared_resources ()->add_computational_units ();
201
+ protoUnit->set_unit_kind (computationalUnit.UnitKind );
202
+ protoUnit->set_count (computationalUnit.Count );
203
+ protoUnit->set_availability_zone (computationalUnit.AvailabilityZone );
204
+ }
205
+ } else if (std::holds_alternative<NCms::TServerlessResources>(ResourcesKind_)) {
206
+ const auto & resources = std::get<NCms::TServerlessResources>(ResourcesKind_);
207
+ request.mutable_serverless_resources ()->set_shared_database_path (resources.SharedDatabasePath );
208
+ }
209
+
210
+ for (const auto & quota : SchemaOperationQuotas_.LeakyBucketQuotas ) {
211
+ auto protoQuota = request.mutable_schema_operation_quotas ()->add_leaky_bucket_quotas ();
212
+ protoQuota->set_bucket_seconds (quota.BucketSeconds );
213
+ protoQuota->set_bucket_size (quota.BucketSize );
214
+ }
215
+
216
+ request.mutable_database_quotas ()->set_data_size_hard_quota (DatabaseQuotas_.DataSizeHardQuota );
217
+ request.mutable_database_quotas ()->set_data_size_soft_quota (DatabaseQuotas_.DataSizeSoftQuota );
218
+ request.mutable_database_quotas ()->set_data_stream_shards_quota (DatabaseQuotas_.DataStreamShardsQuota );
219
+ request.mutable_database_quotas ()->set_data_stream_reserved_storage_quota (DatabaseQuotas_.DataStreamReservedStorageQuota );
220
+ request.mutable_database_quotas ()->set_ttl_min_run_internal_seconds (DatabaseQuotas_.TtlMinRunInternalSeconds );
221
+
222
+ for (const auto & quota : DatabaseQuotas_.StorageQuotas ) {
223
+ auto protoQuota = request.mutable_database_quotas ()->add_storage_quotas ();
224
+ protoQuota->set_unit_kind (quota.UnitKind );
225
+ protoQuota->set_data_size_hard_quota (quota.DataSizeHardQuota );
226
+ protoQuota->set_data_size_soft_quota (quota.DataSizeSoftQuota );
227
+ }
228
+
229
+ for (const auto & policy : ScaleRecommenderPolicies_.Policies ) {
230
+ auto * protoPolicy = request.mutable_scale_recommender_policies ()->add_policies ();
231
+ if (std::holds_alternative<NCms::TTargetTrackingPolicy>(policy.Policy )) {
232
+ const auto & targetTracking = std::get<NCms::TTargetTrackingPolicy>(policy.Policy );
233
+ auto * protoTargetTracking = protoPolicy->mutable_target_tracking_policy ();
234
+ if (std::holds_alternative<NCms::TTargetTrackingPolicy::TAverageCpuUtilizationPercent>(targetTracking.Target )) {
235
+ const auto & target = std::get<NCms::TTargetTrackingPolicy::TAverageCpuUtilizationPercent>(targetTracking.Target );
236
+ protoTargetTracking->set_average_cpu_utilization_percent (target);
237
+ }
238
+ }
239
+ }
240
+ }
241
+
177
242
class TCmsClient ::TImpl : public TClientImplCommon<TCmsClient::TImpl> {
178
243
public:
179
244
TImpl (std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TCommonClientSettings& settings)
@@ -206,9 +271,9 @@ class TCmsClient::TImpl : public TClientImplCommon<TCmsClient::TImpl> {
206
271
return promise.GetFuture ();
207
272
}
208
273
209
- TAsyncGetDatabaseStatusResult GetDatabaseStatus (const TGetDatabaseStatusSettings& settings) {
274
+ TAsyncGetDatabaseStatusResult GetDatabaseStatus (const std::string& path, const TGetDatabaseStatusSettings& settings) {
210
275
Ydb::Cms::GetDatabaseStatusRequest request;
211
- request.set_path (settings. Path_ );
276
+ request.set_path (path );
212
277
213
278
auto promise = NThreading::NewPromise<TGetDatabaseStatusResult>();
214
279
@@ -242,8 +307,11 @@ TAsyncListDatabasesResult TCmsClient::ListDatabases(const TListDatabasesSettings
242
307
return Impl_->ListDatabases (settings);
243
308
}
244
309
245
- TAsyncGetDatabaseStatusResult TCmsClient::GetDatabaseStatus (const TGetDatabaseStatusSettings& settings) {
246
- return Impl_->GetDatabaseStatus (settings);
310
+ TAsyncGetDatabaseStatusResult TCmsClient::GetDatabaseStatus (
311
+ const std::string& path,
312
+ const TGetDatabaseStatusSettings& settings)
313
+ {
314
+ return Impl_->GetDatabaseStatus (path, settings);
247
315
}
248
316
249
317
} // namespace NYdb::NCms
0 commit comments