From 9cddac01badfd64afae34e8048f4a6607bcc2b0e Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Tue, 21 Apr 2020 10:22:33 +0800 Subject: [PATCH] HBASE-24196 [Shell] Add rename rsgroup command in hbase shell (#1551) Signed-off-by: Viraj Jasani Signed-off-by: Jan Hentschel --- .../src/main/ruby/hbase/rsgroup_admin.rb | 6 ++++ hbase-shell/src/main/ruby/shell.rb | 1 + .../ruby/shell/commands/rename_rsgroup.rb | 35 +++++++++++++++++++ .../src/test/ruby/shell/rsgroup_shell_test.rb | 13 +++++++ 4 files changed, 55 insertions(+) create mode 100644 hbase-shell/src/main/ruby/shell/commands/rename_rsgroup.rb diff --git a/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb b/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb index cdfeec9f499..fd39634889f 100644 --- a/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb +++ b/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb @@ -185,5 +185,11 @@ module Hbase def list_tables_in_rs_group(group_name) @admin.listTablesInRSGroup(group_name) end + + #-------------------------------------------------------------------------- + # rename rsgroup + def rename_rsgroup(oldname, newname) + @admin.renameRSGroup(oldname, newname) + end end end diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb index eb013f69589..885394c7030 100644 --- a/hbase-shell/src/main/ruby/shell.rb +++ b/hbase-shell/src/main/ruby/shell.rb @@ -508,5 +508,6 @@ Shell.load_command_group( get_server_rsgroup get_table_rsgroup remove_servers_rsgroup + rename_rsgroup ] ) diff --git a/hbase-shell/src/main/ruby/shell/commands/rename_rsgroup.rb b/hbase-shell/src/main/ruby/shell/commands/rename_rsgroup.rb new file mode 100644 index 00000000000..5403c32ec25 --- /dev/null +++ b/hbase-shell/src/main/ruby/shell/commands/rename_rsgroup.rb @@ -0,0 +1,35 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +module Shell + module Commands + class RenameRsgroup < Command + def help + <<-EOF +Rename a RegionServer group. + + hbase> rename_rsgroup 'old_rsgroup_name', 'new_rsgroup_name' + +EOF + end + + def command(oldname, newname) + rsgroup_admin.rename_rsgroup(oldname, newname) + end + end + end +end diff --git a/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb b/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb index 3a44a121683..d7bccdbe40c 100644 --- a/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb +++ b/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb @@ -127,5 +127,18 @@ module Hbase @hbase.rsgroup_admin().get_rsgroup_of_table('foobar') end end + + define_test 'Test rsgroup rename' do + old_rs_group_name = 'test_group' + new_rs_group_name = 'renamed_test_group' + table_name = 'test_table' + + @hbase.rsgroup_admin.rename_rsgroup(old_rs_group_name, new_rs_group_name) + assert_not_nil(@admin.getRSGroup(new_rs_group_name)) + assert_nil(@admin.getRSGroup(old_rs_group_name)) + assert_equal(1, @admin.getRSGroup(new_rs_group_name).getServers.count) + assert_equal(1, @admin.listTablesInRSGroup(new_rs_group_name).count) + assert_true(@admin.listTablesInRSGroup(new_rs_group_name).contains(org.apache.hadoop.hbase.TableName.valueOf(table_name))) + end end end