Merge "Fix: Volume backup restore output"

This commit is contained in:
Zuul 2025-01-07 18:35:53 +00:00 committed by Gerrit Code Review
commit eb0dbd5c33
5 changed files with 82 additions and 24 deletions

View File

@ -364,16 +364,28 @@ class TestBackupRestore(volume_fakes.TestVolume):
attrs={'volume_id': volume.id}, attrs={'volume_id': volume.id},
) )
columns = (
"id",
"volume_id",
"volume_name",
)
data = (
backup.id,
volume.id,
volume.name,
)
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.volume_sdk_client.find_backup.return_value = self.backup self.volume_sdk_client.find_backup.return_value = self.backup
self.volume_sdk_client.find_volume.return_value = self.volume self.volume_sdk_client.find_volume.return_value = self.volume
self.volume_sdk_client.restore_backup.return_value = ( self.volume_sdk_client.restore_backup.return_value = {
volume_fakes.create_one_volume( 'id': self.backup['id'],
{'id': self.volume['id']}, 'volume_id': self.volume['id'],
) 'volume_name': self.volume['name'],
) }
# Get the command object to mock # Get the command object to mock
self.cmd = volume_backup.RestoreVolumeBackup(self.app, None) self.cmd = volume_backup.RestoreVolumeBackup(self.app, None)
@ -389,13 +401,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=None, volume_id=None,
name=None, name=None,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume(self): def test_backup_restore_with_volume(self):
self.volume_sdk_client.find_volume.side_effect = ( self.volume_sdk_client.find_volume.side_effect = (
@ -411,13 +425,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=None, volume_id=None,
name=self.backup.volume_id, name=self.backup.volume_id,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume_force(self): def test_backup_restore_with_volume_force(self):
arglist = [ arglist = [
@ -432,13 +448,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=self.volume.id, volume_id=self.volume.id,
name=None, name=None,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume_existing(self): def test_backup_restore_with_volume_existing(self):
arglist = [ arglist = [

View File

@ -462,16 +462,28 @@ class TestBackupRestore(volume_fakes.TestVolume):
attrs={'volume_id': volume.id}, attrs={'volume_id': volume.id},
) )
columns = (
"id",
"volume_id",
"volume_name",
)
data = (
backup.id,
volume.id,
volume.name,
)
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.volume_sdk_client.find_backup.return_value = self.backup self.volume_sdk_client.find_backup.return_value = self.backup
self.volume_sdk_client.find_volume.return_value = self.volume self.volume_sdk_client.find_volume.return_value = self.volume
self.volume_sdk_client.restore_backup.return_value = ( self.volume_sdk_client.restore_backup.return_value = {
volume_fakes.create_one_volume( 'id': self.backup['id'],
{'id': self.volume['id']}, 'volume_id': self.volume['id'],
) 'volume_name': self.volume['name'],
) }
# Get the command object to mock # Get the command object to mock
self.cmd = volume_backup.RestoreVolumeBackup(self.app, None) self.cmd = volume_backup.RestoreVolumeBackup(self.app, None)
@ -487,13 +499,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=None, volume_id=None,
name=None, name=None,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume(self): def test_backup_restore_with_volume(self):
self.volume_sdk_client.find_volume.side_effect = ( self.volume_sdk_client.find_volume.side_effect = (
@ -509,13 +523,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=None, volume_id=None,
name=self.backup.volume_id, name=self.backup.volume_id,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume_force(self): def test_backup_restore_with_volume_force(self):
arglist = [ arglist = [
@ -530,13 +546,15 @@ class TestBackupRestore(volume_fakes.TestVolume):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.volume_sdk_client.restore_backup.assert_called_with( self.volume_sdk_client.restore_backup.assert_called_with(
self.backup.id, self.backup.id,
volume_id=self.volume.id, volume_id=self.volume.id,
name=None, name=None,
) )
self.assertIsNotNone(result)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
def test_backup_restore_with_volume_existing(self): def test_backup_restore_with_volume_existing(self):
arglist = [ arglist = [

View File

@ -359,6 +359,12 @@ class RestoreVolumeBackup(command.ShowOne):
ignore_missing=False, ignore_missing=False,
) )
columns = (
'id',
'volume_id',
'volume_name',
)
volume_name = None volume_name = None
volume_id = None volume_id = None
try: try:
@ -378,12 +384,15 @@ class RestoreVolumeBackup(command.ShowOne):
) )
raise exceptions.CommandError(msg % parsed_args.volume) raise exceptions.CommandError(msg % parsed_args.volume)
return volume_client.restore_backup( restore = volume_client.restore_backup(
backup.id, backup.id,
volume_id=volume_id, volume_id=volume_id,
name=volume_name, name=volume_name,
) )
data = utils.get_dict_properties(restore, columns)
return (columns, data)
class SetVolumeBackup(command.Command): class SetVolumeBackup(command.Command):
_description = _("Set volume backup properties") _description = _("Set volume backup properties")

View File

@ -412,6 +412,12 @@ class RestoreVolumeBackup(command.ShowOne):
def take_action(self, parsed_args): def take_action(self, parsed_args):
volume_client = self.app.client_manager.sdk_connection.volume volume_client = self.app.client_manager.sdk_connection.volume
columns = (
'id',
'volume_id',
'volume_name',
)
backup = volume_client.find_backup( backup = volume_client.find_backup(
parsed_args.backup, parsed_args.backup,
ignore_missing=False, ignore_missing=False,
@ -436,12 +442,15 @@ class RestoreVolumeBackup(command.ShowOne):
) )
raise exceptions.CommandError(msg % parsed_args.volume) raise exceptions.CommandError(msg % parsed_args.volume)
return volume_client.restore_backup( restore = volume_client.restore_backup(
backup.id, backup.id,
volume_id=volume_id, volume_id=volume_id,
name=volume_name, name=volume_name,
) )
data = utils.get_dict_properties(restore, columns)
return (columns, data)
class SetVolumeBackup(command.Command): class SetVolumeBackup(command.Command):
_description = _("Set volume backup properties") _description = _("Set volume backup properties")

View File

@ -0,0 +1,4 @@
---
fixes:
- |
Fixed the output of ``volume backup restore`` command.