diff --git a/novaclient/tests/v1_1/fakes.py b/novaclient/tests/v1_1/fakes.py
index 4457d0b94..89a1d60fb 100644
--- a/novaclient/tests/v1_1/fakes.py
+++ b/novaclient/tests/v1_1/fakes.py
@@ -535,11 +535,11 @@ class FakeHTTPClient(base_client.HTTPClient):
             assert list(body[action]) == ['type']
             assert body[action]['type'] in ['HARD', 'SOFT']
         elif action == 'rebuild':
-            keys = list(body[action])
-            if 'adminPass' in keys:
-                keys.remove('adminPass')
-            assert 'imageRef' in keys
+            body = body[action]
+            adminPass = body.get('adminPass', 'randompassword')
+            assert 'imageRef' in body
             _body = self.get_servers_1234()[2]
+            _body['server']['adminPass'] = adminPass
         elif action == 'resize':
             keys = body[action].keys()
             assert 'flavorRef' in keys
diff --git a/novaclient/tests/v1_1/test_shell.py b/novaclient/tests/v1_1/test_shell.py
index fb0a6e613..d86180267 100644
--- a/novaclient/tests/v1_1/test_shell.py
+++ b/novaclient/tests/v1_1/test_shell.py
@@ -739,34 +739,37 @@ class ShellTest(utils.TestCase):
                            {'reboot': {'type': 'HARD'}})
 
     def test_rebuild(self):
-        self.run_command('rebuild sample-server 1')
-        self.assert_called('GET', '/servers', pos=-8)
-        self.assert_called('GET', '/servers/1234', pos=-7)
-        self.assert_called('GET', '/images/1', pos=-6)
+        output = self.run_command('rebuild sample-server 1')
+        self.assert_called('GET', '/servers', pos=-6)
+        self.assert_called('GET', '/servers/1234', pos=-5)
+        self.assert_called('GET', '/images/1', pos=-4)
         self.assert_called('POST', '/servers/1234/action',
-                           {'rebuild': {'imageRef': 1}}, pos=-5)
+                           {'rebuild': {'imageRef': 1}}, pos=-3)
         self.assert_called('GET', '/flavors/1', pos=-2)
         self.assert_called('GET', '/images/2')
+        self.assertIn('adminPass', output)
 
     def test_rebuild_password(self):
-        self.run_command('rebuild sample-server 1 --rebuild-password asdf')
-        self.assert_called('GET', '/servers', pos=-8)
-        self.assert_called('GET', '/servers/1234', pos=-7)
-        self.assert_called('GET', '/images/1', pos=-6)
+        output = self.run_command('rebuild sample-server 1'
+                                  ' --rebuild-password asdf')
+        self.assert_called('GET', '/servers', pos=-6)
+        self.assert_called('GET', '/servers/1234', pos=-5)
+        self.assert_called('GET', '/images/1', pos=-4)
         self.assert_called('POST', '/servers/1234/action',
                            {'rebuild': {'imageRef': 1, 'adminPass': 'asdf'}},
-                           pos=-5)
+                           pos=-3)
         self.assert_called('GET', '/flavors/1', pos=-2)
         self.assert_called('GET', '/images/2')
+        self.assertIn('adminPass', output)
 
     def test_rebuild_preserve_ephemeral(self):
         self.run_command('rebuild sample-server 1 --preserve-ephemeral')
-        self.assert_called('GET', '/servers', pos=-8)
-        self.assert_called('GET', '/servers/1234', pos=-7)
-        self.assert_called('GET', '/images/1', pos=-6)
+        self.assert_called('GET', '/servers', pos=-6)
+        self.assert_called('GET', '/servers/1234', pos=-5)
+        self.assert_called('GET', '/images/1', pos=-4)
         self.assert_called('POST', '/servers/1234/action',
                            {'rebuild': {'imageRef': 1,
-                                        'preserve_ephemeral': True}}, pos=-5)
+                                        'preserve_ephemeral': True}}, pos=-3)
         self.assert_called('GET', '/flavors/1', pos=-2)
         self.assert_called('GET', '/images/2')
 
diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py
index f2dac6224..1c6b28c21 100644
--- a/novaclient/v1_1/shell.py
+++ b/novaclient/v1_1/shell.py
@@ -1210,8 +1210,8 @@ def do_rebuild(cs, args):
 
     kwargs = utils.get_resource_manager_extra_kwargs(do_rebuild, args)
     kwargs['preserve_ephemeral'] = args.preserve_ephemeral
-    server.rebuild(image, _password, **kwargs)
-    _print_server(cs, args)
+    server = server.rebuild(image, _password, **kwargs)
+    _print_server(cs, args, server)
 
     if args.poll:
         _poll_for_status(cs.servers.get, server.id, 'rebuilding', ['active'])
diff --git a/novaclient/v3/shell.py b/novaclient/v3/shell.py
index 75e435985..b9a03ba4f 100644
--- a/novaclient/v3/shell.py
+++ b/novaclient/v3/shell.py
@@ -1055,8 +1055,8 @@ def do_rebuild(cs, args):
         _password = None
 
     kwargs = utils.get_resource_manager_extra_kwargs(do_rebuild, args)
-    server.rebuild(image, _password, **kwargs)
-    _print_server(cs, args)
+    server = server.rebuild(image, _password, **kwargs)
+    _print_server(cs, args, server)
 
     if args.poll:
         _poll_for_status(cs.servers.get, server.id, 'rebuilding', ['active'])