diff options
author | ilnaz <ilnaz@ydb.tech> | 2023-06-19 18:16:54 +0300 |
---|---|---|
committer | ilnaz <ilnaz@ydb.tech> | 2023-06-19 18:16:54 +0300 |
commit | 4ce153903b476c0e5eb23709bd56fccd08b2796b (patch) | |
tree | 958684eecdde4d2a926ec35ca383f5225cc39767 | |
parent | 686a78a5627dbca7e9d5b85bc9652e6122fe517e (diff) | |
download | ydb-4ce153903b476c0e5eb23709bd56fccd08b2796b.tar.gz |
Public api fixes
-rw-r--r-- | ydb/core/cms/api_adapters.cpp | 65 | ||||
-rw-r--r-- | ydb/public/api/protos/draft/ydb_maintenance.proto | 6 |
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 { |