diff --git a/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb b/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb index f5f4e620ad19..dbfd6380dec7 100644 --- a/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb +++ b/hbase-shell/src/main/ruby/hbase/rsgroup_admin.rb @@ -171,5 +171,11 @@ def remove_servers(*args) 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 a6b5b4f20746..6133c5ed7b6d 100644 --- a/hbase-shell/src/main/ruby/shell.rb +++ b/hbase-shell/src/main/ruby/shell.rb @@ -105,7 +105,7 @@ def hbase_security_admin def hbase_visibility_labels_admin @hbase_visibility_labels_admin ||= hbase.visibility_labels_admin() end - + def hbase_quotas_admin @hbase_quotas_admin ||= hbase.quotas_admin() end @@ -468,5 +468,6 @@ def help_footer 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 000000000000..496b3a7cd0b9 --- /dev/null +++ b/hbase-shell/src/main/ruby/shell/commands/rename_rsgroup.rb @@ -0,0 +1,33 @@ +# 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 7542e6e83c56..cb3b8f8b1631 100644 --- a/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb +++ b/hbase-shell/src/test/ruby/shell/rsgroup_shell_test.rb @@ -92,5 +92,18 @@ def setup @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