From a9b156be8f37c6d041941fa843b3db2b39c5906e Mon Sep 17 00:00:00 2001 From: deardeng <565620795@qq.com> Date: Sat, 11 May 2024 19:59:40 +0800 Subject: [PATCH] [fix](cloud)Add cluster add naming check (#34688) --- .../src/resource-manager/resource_manager.cpp | 8 +++ cloud/test/meta_service_http_test.cpp | 55 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/cloud/src/resource-manager/resource_manager.cpp b/cloud/src/resource-manager/resource_manager.cpp index b2573b12603471..5de14f84a5b0e4 100644 --- a/cloud/src/resource-manager/resource_manager.cpp +++ b/cloud/src/resource-manager/resource_manager.cpp @@ -19,6 +19,7 @@ #include +#include #include #include "common/logging.h" @@ -145,6 +146,13 @@ bool ResourceManager::check_cluster_params_valid(const ClusterPB& cluster, std:: return false; } + const char* cluster_pattern_str = "^[a-zA-Z][a-zA-Z0-9_]*$"; + std::regex txt_regex(cluster_pattern_str); + if (!std::regex_match(cluster.cluster_name(), txt_regex)) { + *err = "cluster name not regex with ^[a-zA-Z][a-zA-Z0-9_]*$, please check it"; + return false; + } + std::stringstream ss; bool no_err = true; int master_num = 0; diff --git a/cloud/test/meta_service_http_test.cpp b/cloud/test/meta_service_http_test.cpp index 4e982685e7f78b..6ff399a27e6d2e 100644 --- a/cloud/test/meta_service_http_test.cpp +++ b/cloud/test/meta_service_http_test.cpp @@ -630,6 +630,61 @@ TEST(MetaServiceHttpTest, AlterClusterTest) { ASSERT_EQ(resp.code(), MetaServiceCode::OK); } + { + AlterClusterRequest req; + req.set_instance_id(mock_instance); + req.mutable_cluster()->set_cluster_name("not-support"); + req.mutable_cluster()->set_type(ClusterPB::COMPUTE); + req.mutable_cluster()->set_cluster_id(mock_cluster_id); + auto [status_code, resp] = ctx.forward("add_cluster", req); + ASSERT_EQ(status_code, 400); + ASSERT_EQ(resp.code(), MetaServiceCode::INVALID_ARGUMENT); + } + + { + AlterClusterRequest req; + req.set_instance_id(mock_instance); + req.mutable_cluster()->set_cluster_name("中文not-support"); + req.mutable_cluster()->set_type(ClusterPB::COMPUTE); + req.mutable_cluster()->set_cluster_id(mock_cluster_id); + auto [status_code, resp] = ctx.forward("add_cluster", req); + ASSERT_EQ(status_code, 400); + ASSERT_EQ(resp.code(), MetaServiceCode::INVALID_ARGUMENT); + } + + { + AlterClusterRequest req; + req.set_instance_id(mock_instance); + req.mutable_cluster()->set_cluster_name(" "); + req.mutable_cluster()->set_type(ClusterPB::COMPUTE); + req.mutable_cluster()->set_cluster_id(mock_cluster_id); + auto [status_code, resp] = ctx.forward("add_cluster", req); + ASSERT_EQ(status_code, 400); + ASSERT_EQ(resp.code(), MetaServiceCode::INVALID_ARGUMENT); + } + + { + AlterClusterRequest req; + req.set_instance_id(mock_instance); + req.mutable_cluster()->set_cluster_name(" not_support "); + req.mutable_cluster()->set_type(ClusterPB::COMPUTE); + req.mutable_cluster()->set_cluster_id(mock_cluster_id); + auto [status_code, resp] = ctx.forward("add_cluster", req); + ASSERT_EQ(status_code, 400); + ASSERT_EQ(resp.code(), MetaServiceCode::INVALID_ARGUMENT); + } + + { + AlterClusterRequest req; + req.set_instance_id(mock_instance); + req.mutable_cluster()->set_cluster_name(" not_support"); + req.mutable_cluster()->set_type(ClusterPB::COMPUTE); + req.mutable_cluster()->set_cluster_id(mock_cluster_id); + auto [status_code, resp] = ctx.forward("add_cluster", req); + ASSERT_EQ(status_code, 400); + ASSERT_EQ(resp.code(), MetaServiceCode::INVALID_ARGUMENT); + } + // case: request has invalid argument { AlterClusterRequest req;