summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorInnokentii Mokin <[email protected]>2024-04-16 11:52:41 +0300
committerGitHub <[email protected]>2024-04-16 11:52:41 +0300
commitd7ca23dbee1457a777070e1fea0c513e3a5ae27d (patch)
tree59482f672560cd04c0fdd1811972c8e5ae90e22d
parent1acdfa076cedab37949c547c1c80bfe682e25452 (diff)
[configs] fix nvme handling in pdisk from category (#3761)
-rw-r--r--ydb/library/yaml_config/yaml_config_parser.cpp9
-rw-r--r--ydb/library/yaml_config/yaml_config_parser_impl.h9
-rw-r--r--ydb/library/yaml_config/yaml_config_parser_ut.cpp14
3 files changed, 29 insertions, 3 deletions
diff --git a/ydb/library/yaml_config/yaml_config_parser.cpp b/ydb/library/yaml_config/yaml_config_parser.cpp
index a1d7969a8dd..67816ea093f 100644
--- a/ydb/library/yaml_config/yaml_config_parser.cpp
+++ b/ydb/library/yaml_config/yaml_config_parser.cpp
@@ -1,9 +1,12 @@
#include "yaml_config_parser.h"
+#include "yaml_config_parser_impl.h"
#include "yaml_config_helpers.h"
#include "core_constants.h"
+#include <ydb/library/pdisk_io/device_type.h>
#include <ydb/library/yaml_config/protos/config.pb.h>
+#include <ydb/core/base/blobstorage_pdisk_category.h>
#include <ydb/core/base/domain.h>
#include <ydb/core/erasure/erasure.h>
#include <ydb/core/protos/blobstorage_config.pb.h>
@@ -236,11 +239,11 @@ namespace NKikimr::NYaml {
}
if (data == "ROT") {
- return 0;
+ return TPDiskCategory(NPDisk::DEVICE_TYPE_ROT, 0).GetRaw();
} else if (data == "SSD") {
- return 1;
+ return TPDiskCategory(NPDisk::DEVICE_TYPE_SSD, 0).GetRaw();
} else if (data == "NVME") {
- return 2;
+ return TPDiskCategory(NPDisk::DEVICE_TYPE_NVME, 0).GetRaw();
}
Y_ENSURE_BT(false, "unknown pdisk category " << data);
diff --git a/ydb/library/yaml_config/yaml_config_parser_impl.h b/ydb/library/yaml_config/yaml_config_parser_impl.h
new file mode 100644
index 00000000000..57a40da718f
--- /dev/null
+++ b/ydb/library/yaml_config/yaml_config_parser_impl.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include <util/generic/string.h>
+
+namespace NKikimr::NYaml {
+
+ui64 PdiskCategoryFromString(const TString& data);
+
+} // namespace NKikimr::NYaml
diff --git a/ydb/library/yaml_config/yaml_config_parser_ut.cpp b/ydb/library/yaml_config/yaml_config_parser_ut.cpp
index 6911bb584ce..c1eee4b5819 100644
--- a/ydb/library/yaml_config/yaml_config_parser_ut.cpp
+++ b/ydb/library/yaml_config/yaml_config_parser_ut.cpp
@@ -1,4 +1,5 @@
#include "yaml_config_parser.h"
+#include "yaml_config_parser_impl.h"
#include "yaml_config_helpers.h"
#include <ydb/core/protos/key.pb.h>
@@ -76,4 +77,17 @@ pdisk_key_config:
auto key = keys.at(0);
UNIT_ASSERT_VALUES_EQUAL("c2FtcGxlLXBpbgo=", key.pin());
}
+
+ Y_UNIT_TEST(PdiskCategoryFromString) {
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("0"), 0ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("ROT"), 0ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("1"), 1ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("SSD"), 1ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("2"), 2ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("3"), 3ull);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("562949953421312"), 1ull << 49);
+ UNIT_ASSERT_VALUES_EQUAL(PdiskCategoryFromString("NVME"), 144115188075855873ull);
+ UNIT_CHECK_GENERATED_EXCEPTION(PdiskCategoryFromString("zzz"), yexception);
+ UNIT_CHECK_GENERATED_EXCEPTION(PdiskCategoryFromString("-1"), yexception);
+ }
}