aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilnaz <ilnaz@ydb.tech>2023-06-19 18:16:54 +0300
committerilnaz <ilnaz@ydb.tech>2023-06-19 18:16:54 +0300
commit4ce153903b476c0e5eb23709bd56fccd08b2796b (patch)
tree958684eecdde4d2a926ec35ca383f5225cc39767
parent686a78a5627dbca7e9d5b85bc9652e6122fe517e (diff)
downloadydb-4ce153903b476c0e5eb23709bd56fccd08b2796b.tar.gz
Public api fixes
-rw-r--r--ydb/core/cms/api_adapters.cpp65
-rw-r--r--ydb/public/api/protos/draft/ydb_maintenance.proto6
2 files changed, 47 insertions, 24 deletions
diff --git a/ydb/core/cms/api_adapters.cpp b/ydb/core/cms/api_adapters.cpp
index 3833d2426f..3b08f7174f 100644
--- a/ydb/core/cms/api_adapters.cpp
+++ b/ydb/core/cms/api_adapters.cpp
@@ -108,9 +108,11 @@ protected:
auto ev = MakeHolder<TEvResponse>();
ev->Record.SetStatus(code);
- auto& issue = *ev->Record.AddIssues();
- issue.set_severity(NYql::TSeverityIds::S_ERROR);
- issue.set_message(error);
+ if (error) {
+ auto& issue = *ev->Record.AddIssues();
+ issue.set_severity(NYql::TSeverityIds::S_ERROR);
+ issue.set_message(error);
+ }
Reply(std::move(ev));
}
@@ -614,54 +616,75 @@ class TDropMaintenanceTask: public TAdapterActor<
TEvCms::TEvDropMaintenanceTaskRequest,
TEvCms::TEvManageMaintenanceTaskResponse>
{
+ void DropRequest(const TTaskInfo& task) {
+ auto cmsRequest = MakeHolder<TEvCms::TEvManageRequestRequest>();
+ cmsRequest->Record.SetUser(task.Owner);
+ cmsRequest->Record.SetRequestId(task.RequestId);
+ cmsRequest->Record.SetCommand(NKikimrCms::TManageRequestRequest::REJECT);
+
+ Send(CmsActorId, std::move(cmsRequest));
+ }
+
+ void DropPermissions(const TTaskInfo& task) {
+ auto cmsRequest = MakeHolder<TEvCms::TEvManagePermissionRequest>();
+ cmsRequest->Record.SetUser(task.Owner);
+ cmsRequest->Record.SetCommand(NKikimrCms::TManagePermissionRequest::REJECT);
+
+ for (const auto& id : task.Permissions) {
+ cmsRequest->Record.AddPermissions(id);
+ }
+
+ Send(CmsActorId, std::move(cmsRequest));
+ }
+
public:
using TBase::TBase;
void Bootstrap() {
auto cmsState = GetCmsState();
- auto it = cmsState->MaintenanceTasks.find(Request->Get()->Record.GetRequest().task_uid());
+ auto it = cmsState->MaintenanceTasks.find(GetTaskUid());
if (it == cmsState->MaintenanceTasks.end()) {
return Reply(Ydb::StatusIds::BAD_REQUEST, "Task not found");
}
const auto& task = it->second;
if (cmsState->ScheduledRequests.contains(task.RequestId)) {
- auto cmsRequest = MakeHolder<TEvCms::TEvManageRequestRequest>();
- cmsRequest->Record.SetUser(task.Owner);
- cmsRequest->Record.SetRequestId(task.RequestId);
- cmsRequest->Record.SetCommand(NKikimrCms::TManageRequestRequest::REJECT);
-
- Send(CmsActorId, std::move(cmsRequest));
+ DropRequest(task);
} else {
- auto cmsRequest = MakeHolder<TEvCms::TEvManagePermissionRequest>();
- cmsRequest->Record.SetUser(task.Owner);
- cmsRequest->Record.SetCommand(NKikimrCms::TManagePermissionRequest::REJECT);
-
- for (const auto& id : task.Permissions) {
- cmsRequest->Record.AddPermissions(id);
- }
-
- Send(CmsActorId, std::move(cmsRequest));
+ DropPermissions(task);
}
Become(&TThis::StateWork);
}
+ const TString& GetTaskUid() const {
+ return Request->Get()->Record.GetRequest().task_uid();
+ }
+
STFUNC(StateWork) {
switch (ev->GetTypeRewrite()) {
- hFunc(TEvCms::TEvManageRequestResponse, Handle<TEvCms::TEvManageRequestResponse>);
+ hFunc(TEvCms::TEvManageRequestResponse, HandleDropRequest);
hFunc(TEvCms::TEvManagePermissionResponse, Handle<TEvCms::TEvManagePermissionResponse>);
}
}
+ void HandleDropRequest(TEvCms::TEvManageRequestResponse::TPtr& ev) {
+ auto cmsState = GetCmsState();
+ if (cmsState->MaintenanceTasks.contains(GetTaskUid())) {
+ DropPermissions(cmsState->MaintenanceTasks.at(GetTaskUid()));
+ } else {
+ Handle<TEvCms::TEvManageRequestResponse>(ev);
+ }
+ }
+
template <typename TEvResponse>
void Handle(typename TEvResponse::TPtr& ev) {
const auto& record = ev->Get()->Record;
switch (record.GetStatus().GetCode()) {
case NKikimrCms::TStatus::OK:
- return Reply(Ydb::StatusIds::SUCCESS, record.GetStatus().GetReason());
+ return Reply(Ydb::StatusIds::SUCCESS);
case NKikimrCms::TStatus::WRONG_REQUEST:
return Reply(Ydb::StatusIds::BAD_REQUEST, record.GetStatus().GetReason());
default:
diff --git a/ydb/public/api/protos/draft/ydb_maintenance.proto b/ydb/public/api/protos/draft/ydb_maintenance.proto
index 14d2c43755..904fdc2ed3 100644
--- a/ydb/public/api/protos/draft/ydb_maintenance.proto
+++ b/ydb/public/api/protos/draft/ydb_maintenance.proto
@@ -108,13 +108,13 @@ message Action {
}
message ActionGroup {
- repeated Action actions = 1;
+ repeated Action actions = 1 [(size).ge = 1];
}
message CreateMaintenanceTaskRequest {
Ydb.Operations.OperationParams operation_params = 1;
MaintenanceTaskOptions task_options = 2;
- repeated ActionGroup action_groups = 3;
+ repeated ActionGroup action_groups = 3 [(size).ge = 1];
}
message RefreshMaintenanceTaskRequest {
@@ -222,7 +222,7 @@ message ManageMaintenanceTaskResponse {
message CompleteActionRequest {
Ydb.Operations.OperationParams operation_params = 1;
- repeated ActionUid action_uids = 2;
+ repeated ActionUid action_uids = 2 [(size).ge = 1];
}
message ManageActionResult {