From 5086bf1a3efbceddafc7b0543675f984331b87b7 Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Tue, 21 Apr 2020 12:56:44 +0800 Subject: [PATCH] HBASE-24196 [Shell] Add rename rsgroup command in hbase shell (#1554) 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 4e32ea4447b..76a480b34c5 100644 --- a/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb +++ b/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb @@ -179,5 +179,11 @@ module Hbase end @admin.removeServers(servers) 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 9697c7336a8..6303d6b34a4 100644 --- a/hbase-shell/src/main/ruby/shell.rb +++ b/hbase-shell/src/main/ruby/shell.rb @@ -507,5 +507,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 ab7ba0d41fb..5e7f37d1e12 100644 --- a/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb +++ b/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb @@ -129,5 +129,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(@rsgroup_admin.getRSGroupInfo(new_rs_group_name)) + assert_nil(@rsgroup_admin.getRSGroupInfo(old_rs_group_name)) + assert_equal(1, @rsgroup_admin.getRSGroupInfo(new_rs_group_name).getServers.count) + assert_equal(1, @rsgroup_admin.getRSGroupInfo(new_rs_group_name).getTables.count) + assert_equal(table_name, @rsgroup_admin.getRSGroupInfo(new_rs_group_name).getTables.iterator.next.toString) + end end end