Skip to content

Commit

Permalink
refactor viewer backend
Browse files Browse the repository at this point in the history
  • Loading branch information
adameat committed Jul 25, 2024
1 parent 812d7c8 commit 41c257d
Show file tree
Hide file tree
Showing 84 changed files with 2,605 additions and 2,857 deletions.
1 change: 1 addition & 0 deletions ydb/core/viewer/browse.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <ydb/core/base/hive.h>
#include <ydb/core/base/tablet.h>
#include <ydb/core/base/tablet_pipe.h>
#include <ydb/core/blobstorage/base/blobstorage_events.h>
#include <ydb/library/services/services.pb.h>
#include <ydb/core/tx/schemeshard/schemeshard.h>
#include <ydb/core/tx/tx_proxy/proxy.h>
Expand Down
30 changes: 0 additions & 30 deletions ydb/core/viewer/json_blobindexstat.h

This file was deleted.

122 changes: 0 additions & 122 deletions ydb/core/viewer/json_bscontrollerinfo.h

This file was deleted.

47 changes: 47 additions & 0 deletions ydb/core/viewer/json_handlers.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#include "json_handlers.h"
#include <library/cpp/yaml/as/tstring.h>

namespace NKikimr::NViewer {

TSimpleYamlBuilder::TSimpleYamlBuilder(TInitializer initializer) {
Method = Root[TString(initializer.Method)];
if (initializer.Url) {
Method["tags"].push_back(TString(initializer.Url.After('/').Before('/')));
}
if (initializer.Tag) {
Method["tags"].push_back(TString(initializer.Tag));
}
if (initializer.Summary) {
Method["summary"] = TString(initializer.Summary);
}
if (initializer.Description) {
Method["description"] = TString(initializer.Description);
}
}

void TSimpleYamlBuilder::SetParameters(YAML::Node parameters) {
Method["parameters"] = parameters;
}

void TSimpleYamlBuilder::AddParameter(TParameter parameter) {
YAML::Node param;
param["in"] = "query";
param["name"] = TString(parameter.Name);
if (parameter.Description) {
param["description"] = TString(parameter.Description);
}
if (parameter.Type) {
param["type"] = TString(parameter.Type);
}
if (parameter.Default) {
param["default"] = TString(parameter.Default);
}
param["required"] = parameter.Required;
Method["parameters"].push_back(param);
}

void TSimpleYamlBuilder::SetResponseSchema(YAML::Node schema) {
Method["responses"]["200"]["content"]["application/json"]["schema"] = schema;
}

}
64 changes: 38 additions & 26 deletions ydb/core/viewer/json_handlers.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,43 +9,24 @@ class TJsonHandlerBase {
public:
virtual ~TJsonHandlerBase() = default;
virtual IActor* CreateRequestActor(IViewer* viewer, NMon::TEvHttpInfo::TPtr& event) = 0;
virtual YAML::Node GetResponseJsonSchema() = 0;
virtual TString GetRequestSummary() = 0;
virtual TString GetRequestDescription() = 0;
virtual YAML::Node GetRequestParameters() = 0;
virtual YAML::Node GetRequestSwagger() = 0;
};

template <typename ActorRequestType>
class TJsonHandler : public TJsonHandlerBase {
public:
IActor* CreateRequestActor(IViewer* viewer, NMon::TEvHttpInfo::TPtr& event) override {
return new ActorRequestType(viewer, event);
}
YAML::Node Swagger;

YAML::Node GetResponseJsonSchema() override {
static YAML::Node jsonSchema = TJsonRequestSchema<ActorRequestType>::GetSchema();
return jsonSchema;
}
TJsonHandler(YAML::Node swagger)
: Swagger(swagger)
{}

TString GetRequestSummary() override {
static TString summary = TJsonRequestSummary<ActorRequestType>::GetSummary();
return summary;
}

TString GetRequestDescription() override {
static TString description = TJsonRequestDescription<ActorRequestType>::GetDescription();
return description;
}

YAML::Node GetRequestParameters() override {
static YAML::Node parameters = TJsonRequestParameters<ActorRequestType>::GetParameters();
return parameters;
IActor* CreateRequestActor(IViewer* viewer, NMon::TEvHttpInfo::TPtr& event) override {
return new ActorRequestType(viewer, event);
}

YAML::Node GetRequestSwagger() override {
static YAML::Node swagger = TJsonRequestSwagger<ActorRequestType>::GetSwagger();
return swagger;
return Swagger;
}
};

Expand All @@ -69,4 +50,35 @@ struct TJsonHandlers {
}
};

class TSimpleYamlBuilder {
public:
struct TInitializer {
TStringBuf Method;
TStringBuf Tag;
TStringBuf Url;
TStringBuf Summary;
TStringBuf Description;
};

struct TParameter {
TStringBuf Name;
TStringBuf Description;
TStringBuf Type;
TStringBuf Default;
bool Required = false;
};

YAML::Node Root;
YAML::Node Method;

TSimpleYamlBuilder(TInitializer initializer);
void SetParameters(YAML::Node parameters);
void AddParameter(TParameter parameter);
void SetResponseSchema(YAML::Node schema);

operator YAML::Node() {
return Root;
}
};

} // namespace NKikimr::NViewer
18 changes: 9 additions & 9 deletions ydb/core/viewer/json_handlers_operation.cpp
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
#include "json_handlers.h"

#include "operation_get.h"
#include "operation_list.h"
#include "operation_cancel.h"
#include "operation_forget.h"

namespace NKikimr::NViewer {

void InitOperationGetJsonHandler(TJsonHandlers& handlers);
void InitOperationListJsonHandler(TJsonHandlers& handlers);
void InitOperationCancelJsonHandler(TJsonHandlers& handlers);
void InitOperationForgetJsonHandler(TJsonHandlers& handlers);

void InitOperationJsonHandlers(TJsonHandlers& jsonHandlers) {
jsonHandlers.AddHandler("/operation/get", new TJsonHandler<TOperationGet>);
jsonHandlers.AddHandler("/operation/list", new TJsonHandler<TOperationList>);
jsonHandlers.AddHandler("/operation/cancel", new TJsonHandler<TOperationCancel>);
jsonHandlers.AddHandler("/operation/forget", new TJsonHandler<TOperationForget>);
InitOperationGetJsonHandler(jsonHandlers);
InitOperationListJsonHandler(jsonHandlers);
InitOperationCancelJsonHandler(jsonHandlers);
InitOperationForgetJsonHandler(jsonHandlers);
}

}
18 changes: 7 additions & 11 deletions ydb/core/viewer/json_handlers_pdisk.cpp
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
#include <ydb/core/blobstorage/vdisk/common/vdisk_events.h>
#include <ydb/core/blobstorage/base/blobstorage_events.h>

#include "json_handlers.h"

#include "json_pdisk_restart.h"
#include "pdisk_info.h"
#include "pdisk_status.h"


namespace NKikimr::NViewer {

void InitPDiskInfoJsonHandler(TJsonHandlers& handlers);
void InitPDiskRestartJsonHandler(TJsonHandlers& handlers);
void InitPDiskStatusJsonHandler(TJsonHandlers& handlers);

void InitPDiskJsonHandlers(TJsonHandlers& jsonHandlers) {
jsonHandlers.AddHandler("/pdisk/info", new TJsonHandler<TPDiskInfo>);
jsonHandlers.AddHandler("/pdisk/restart", new TJsonHandler<TJsonPDiskRestart>);
jsonHandlers.AddHandler("/pdisk/status", new TJsonHandler<TPDiskStatus>);
InitPDiskInfoJsonHandler(jsonHandlers);
InitPDiskRestartJsonHandler(jsonHandlers);
InitPDiskStatusJsonHandler(jsonHandlers);
}

}
29 changes: 29 additions & 0 deletions ydb/core/viewer/json_handlers_pq.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "viewer.h"
#include "browse_pq.h"

namespace NKikimr::NViewer {

void SetupPQVirtualHandlers(IViewer* viewer) {
viewer->RegisterVirtualHandler(
NKikimrViewer::EObjectType::Root,
[] (const TActorId& owner, const IViewer::TBrowseContext& browseContext) -> IActor* {
return new NViewerPQ::TBrowseRoot(owner, browseContext);
});
viewer->RegisterVirtualHandler(
NKikimrViewer::EObjectType::Consumers,
[] (const TActorId& owner, const IViewer::TBrowseContext& browseContext) -> IActor* {
return new NViewerPQ::TBrowseConsumers(owner, browseContext);
});
viewer->RegisterVirtualHandler(
NKikimrViewer::EObjectType::Consumer,
[] (const TActorId& owner, const IViewer::TBrowseContext& browseContext) -> IActor* {
return new NViewerPQ::TBrowseConsumer(owner, browseContext);
});
viewer->RegisterVirtualHandler(
NKikimrViewer::EObjectType::Topic,
[] (const TActorId& owner, const IViewer::TBrowseContext& browseContext) -> IActor* {
return new NViewerPQ::TBrowseTopic(owner, browseContext);
});
}

}
6 changes: 3 additions & 3 deletions ydb/core/viewer/json_handlers_scheme.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#include "json_handlers.h"

#include "scheme_directory.h"

namespace NKikimr::NViewer {

void InitSchemeDirectoryHandler(TJsonHandlers& handlers);

void InitSchemeJsonHandlers(TJsonHandlers& jsonHandlers) {
jsonHandlers.AddHandler("/scheme/directory", new TJsonSchemeDirectoryHandler());
InitSchemeDirectoryHandler(jsonHandlers);
}

}
Loading

0 comments on commit 41c257d

Please sign in to comment.