Merge "Show backup and volume info in backup_restore"

This commit is contained in:
Jenkins
2015-08-24 12:13:40 +00:00
committed by Gerrit Code Review
3 changed files with 48 additions and 2 deletions

View File

@@ -21,6 +21,8 @@ from six.moves.urllib import parse
from cinderclient import client from cinderclient import client
from cinderclient import exceptions from cinderclient import exceptions
from cinderclient import shell from cinderclient import shell
from cinderclient.v2 import volumes
from cinderclient.v2 import shell as test_shell
from cinderclient.tests.unit import utils from cinderclient.tests.unit import utils
from cinderclient.tests.unit.v2 import fakes from cinderclient.tests.unit.v2 import fakes
from cinderclient.tests.unit.fixture_data import keystone_client from cinderclient.tests.unit.fixture_data import keystone_client
@@ -55,6 +57,15 @@ class ShellTest(utils.TestCase):
'GET', keystone_client.BASE_URL, 'GET', keystone_client.BASE_URL,
text=keystone_client.keystone_request_callback) text=keystone_client.keystone_request_callback)
self.cs = mock.Mock()
def _make_args(self, args):
class Args(object):
def __init__(self, entries):
self.__dict__.update(entries)
return Args(args)
def tearDown(self): def tearDown(self):
# For some methods like test_image_meta_bad_action we are # For some methods like test_image_meta_bad_action we are
# testing a SystemExit to be thrown and object self.shell has # testing a SystemExit to be thrown and object self.shell has
@@ -363,6 +374,30 @@ class ShellTest(utils.TestCase):
self.run_command('backup-restore 1234') self.run_command('backup-restore 1234')
self.assert_called('POST', '/backups/1234/restore') self.assert_called('POST', '/backups/1234/restore')
@mock.patch('cinderclient.utils.print_dict')
@mock.patch('cinderclient.utils.find_volume')
def test_do_backup_restore(self,
mock_find_volume,
mock_print_dict):
backup_id = '1234'
volume_id = '5678'
input = {
'backup': backup_id,
'volume': volume_id
}
args = self._make_args(input)
with mock.patch.object(self.cs.restores,
'restore') as mocked_restore:
mock_find_volume.return_value = volumes.Volume(self,
{'id': volume_id},
loaded = True)
test_shell.do_backup_restore(self.cs, args)
mocked_restore.assert_called_once_with(
input['backup'],
volume_id)
self.assertTrue(mock_print_dict.called)
def test_record_export(self): def test_record_export(self):
self.run_command('backup-export 1234') self.run_command('backup-export 1234')
self.assert_called('GET', '/backups/1234/export_record') self.assert_called('GET', '/backups/1234/export_record')

View File

@@ -15,6 +15,7 @@
from cinderclient.tests.unit import utils from cinderclient.tests.unit import utils
from cinderclient.tests.unit.v2 import fakes from cinderclient.tests.unit.v2 import fakes
from cinderclient.v2 import volume_backups_restore
cs = fakes.FakeClient() cs = fakes.FakeClient()
@@ -59,8 +60,10 @@ class VolumeBackupsTest(utils.TestCase):
def test_restore(self): def test_restore(self):
backup_id = '76a17945-3c6f-435c-975b-b5685db10b62' backup_id = '76a17945-3c6f-435c-975b-b5685db10b62'
cs.restores.restore(backup_id) info = cs.restores.restore(backup_id)
cs.assert_called('POST', '/backups/%s/restore' % backup_id) cs.assert_called('POST', '/backups/%s/restore' % backup_id)
self.assertIsInstance(info,
volume_backups_restore.VolumeBackupsRestore)
def test_record_export(self): def test_record_export(self):
backup_id = '76a17945-3c6f-435c-975b-b5685db10b62' backup_id = '76a17945-3c6f-435c-975b-b5685db10b62'

View File

@@ -1300,7 +1300,15 @@ def do_backup_restore(cs, args):
volume_id = utils.find_volume(cs, vol).id volume_id = utils.find_volume(cs, vol).id
else: else:
volume_id = None volume_id = None
cs.restores.restore(args.backup, volume_id)
restore = cs.restores.restore(args.backup, volume_id)
info = {"backup_id": args.backup}
info.update(restore._info)
info.pop('links', None)
utils.print_dict(info)
@utils.arg('backup', metavar='<backup>', @utils.arg('backup', metavar='<backup>',