summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-08-11 04:36:52 +0000
committerGerrit Code Review <review@openstack.org>2016-08-11 04:36:52 +0000
commitc9cf6c4eb29b4dff41fc949b6a288ed2f4a69592 (patch)
tree0062628a4e0d574d54c2b96aaace7b3931b9a5d2
parent5b724fc88b92eda6c801a6a561b2cf034e471a03 (diff)
parent39c5eb9e3fe89bf177e513e447f22b62f5e4785c (diff)
downloadpython-openstackclient-c9cf6c4eb29b4dff41fc949b6a288ed2f4a69592.tar.gz
Merge "Rename backup commands in volume v1 and v2"
-rw-r--r--doc/source/command-objects/backup.rst5
-rw-r--r--doc/source/command-objects/volume-backup.rst132
-rw-r--r--openstackclient/tests/volume/v2/test_backup.py10
-rw-r--r--openstackclient/volume/v1/backup.py116
-rw-r--r--openstackclient/volume/v2/backup.py115
-rw-r--r--releasenotes/notes/bp-backup-snapshot-renamed-for-volume-resource-2d2d13ea8489a61f.yaml8
-rw-r--r--setup.cfg12
7 files changed, 363 insertions, 35 deletions
diff --git a/doc/source/command-objects/backup.rst b/doc/source/command-objects/backup.rst
index 4abc155f..ac887086 100644
--- a/doc/source/command-objects/backup.rst
+++ b/doc/source/command-objects/backup.rst
@@ -8,6 +8,7 @@ backup create
-------------
Create new backup
+(Deprecated, please use ``volume backup create`` instead)
.. program:: backup create
.. code:: bash
@@ -60,6 +61,7 @@ backup delete
-------------
Delete backup(s)
+(Deprecated, please use ``volume backup delete`` instead)
.. program:: backup delete
.. code:: bash
@@ -83,6 +85,7 @@ backup list
-----------
List backups
+(Deprecated, please use ``volume backup list`` instead)
.. program:: backup list
.. code:: bash
@@ -98,6 +101,7 @@ backup restore
--------------
Restore backup
+(Deprecated, please use ``volume backup restore`` instead)
.. program:: backup restore
.. code:: bash
@@ -119,6 +123,7 @@ backup show
-----------
Display backup details
+(Deprecated, please use ``volume backup show`` instead)
.. program:: backup show
.. code:: bash
diff --git a/doc/source/command-objects/volume-backup.rst b/doc/source/command-objects/volume-backup.rst
new file mode 100644
index 00000000..3a8f0213
--- /dev/null
+++ b/doc/source/command-objects/volume-backup.rst
@@ -0,0 +1,132 @@
+=============
+volume backup
+=============
+
+Block Storage v1, v2
+
+volume backup create
+--------------------
+
+Create new volume backup
+
+.. program:: volume backup create
+.. code:: bash
+
+ os volume backup create
+ [--container <container>]
+ [--name <name>]
+ [--description <description>]
+ [--snapshot <snapshot>]
+ [--force]
+ [--incremental]
+ <volume>
+
+.. option:: --container <container>
+
+ Optional backup container name
+
+.. option:: --name <name>
+
+ Name of the backup
+
+.. option:: --description <description>
+
+ Description of the backup
+
+.. option:: --snapshot <snapshot>
+
+ Snapshot to backup (name or ID)
+
+ *Volume version 2 only*
+
+.. option:: --force
+
+ Allow to back up an in-use volume
+
+ *Volume version 2 only*
+
+.. option:: --incremental
+
+ Perform an incremental backup
+
+ *Volume version 2 only*
+
+.. _volume_backup_create-backup:
+.. describe:: <volume>
+
+ Volume to backup (name or ID)
+
+volume backup delete
+--------------------
+
+Delete volume backup(s)
+
+.. program:: volume backup delete
+.. code:: bash
+
+ os volume backup delete
+ [--force]
+ <backup> [<backup> ...]
+
+.. option:: --force
+
+ Allow delete in state other than error or available
+
+ *Volume version 2 only*
+
+.. _volume_backup_delete-backup:
+.. describe:: <backup>
+
+ Backup(s) to delete (name or ID)
+
+volume backup list
+------------------
+
+List volume backups
+
+.. program:: volume backup list
+.. code:: bash
+
+ os volume backup list
+
+.. _volume_backup_list-backup:
+.. option:: --long
+
+ List additional fields in output
+
+volume backup restore
+---------------------
+
+Restore volume backup
+
+.. program:: volume backup restore
+.. code:: bash
+
+ os volume backup restore
+ <backup>
+ <volume>
+
+.. _volume_backup_restore-backup:
+.. describe:: <backup>
+
+ Backup to restore (name or ID)
+
+.. describe:: <volume>
+
+ Volume to restore to (name or ID)
+
+volume backup show
+------------------
+
+Display volume backup details
+
+.. program:: volume backup show
+.. code:: bash
+
+ os volume backup show
+ <backup>
+
+.. _volume_backup_show-backup:
+.. describe:: <backup>
+
+ Backup to display (name or ID)
diff --git a/openstackclient/tests/volume/v2/test_backup.py b/openstackclient/tests/volume/v2/test_backup.py
index 3c2b3948..67064352 100644
--- a/openstackclient/tests/volume/v2/test_backup.py
+++ b/openstackclient/tests/volume/v2/test_backup.py
@@ -77,7 +77,7 @@ class TestBackupCreate(TestBackup):
self.backups_mock.create.return_value = self.new_backup
# Get the command object to test
- self.cmd = backup.CreateBackup(self.app, None)
+ self.cmd = backup.CreateVolumeBackup(self.app, None)
def test_backup_create(self):
arglist = [
@@ -154,7 +154,7 @@ class TestBackupDelete(TestBackup):
self.backups_mock.delete.return_value = None
# Get the command object to mock
- self.cmd = backup.DeleteBackup(self.app, None)
+ self.cmd = backup.DeleteVolumeBackup(self.app, None)
def test_backup_delete(self):
arglist = [
@@ -281,7 +281,7 @@ class TestBackupList(TestBackup):
self.volumes_mock.list.return_value = [self.volume]
self.backups_mock.list.return_value = self.backups
# Get the command to test
- self.cmd = backup.ListBackup(self.app, None)
+ self.cmd = backup.ListVolumeBackup(self.app, None)
def test_backup_list_without_options(self):
arglist = []
@@ -317,7 +317,7 @@ class TestBackupRestore(TestBackup):
self.volumes_mock.get.return_value = self.volume
self.restores_mock.restore.return_value = None
# Get the command object to mock
- self.cmd = backup.RestoreBackup(self.app, None)
+ self.cmd = backup.RestoreVolumeBackup(self.app, None)
def test_backup_restore(self):
arglist = [
@@ -370,7 +370,7 @@ class TestBackupShow(TestBackup):
self.backups_mock.get.return_value = self.backup
# Get the command object to test
- self.cmd = backup.ShowBackup(self.app, None)
+ self.cmd = backup.ShowVolumeBackup(self.app, None)
def test_backup_show(self):
arglist = [
diff --git a/openstackclient/volume/v1/backup.py b/openstackclient/volume/v1/backup.py
index 5f34a2c5..539ed369 100644
--- a/openstackclient/volume/v1/backup.py
+++ b/openstackclient/volume/v1/backup.py
@@ -16,6 +16,7 @@
"""Volume v1 Backup action implementations"""
import copy
+import logging
from osc_lib.command import command
from osc_lib import utils
@@ -24,11 +25,11 @@ import six
from openstackclient.i18n import _
-class CreateBackup(command.ShowOne):
- """Create new backup"""
+class CreateVolumeBackup(command.ShowOne):
+ """Create new volume backup"""
def get_parser(self, prog_name):
- parser = super(CreateBackup, self).get_parser(prog_name)
+ parser = super(CreateVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
'volume',
metavar='<volume>',
@@ -67,11 +68,28 @@ class CreateBackup(command.ShowOne):
return zip(*sorted(six.iteritems(backup._info)))
-class DeleteBackup(command.Command):
- """Delete backup(s)"""
+class CreateBackup(CreateVolumeBackup):
+ """Create new backup"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup create`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup create" instead.'))
+ return super(CreateBackup, self).take_action(parsed_args)
+
+
+class DeleteVolumeBackup(command.Command):
+ """Delete volume backup(s)"""
def get_parser(self, prog_name):
- parser = super(DeleteBackup, self).get_parser(prog_name)
+ parser = super(DeleteVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
'backups',
metavar='<backup>',
@@ -88,11 +106,28 @@ class DeleteBackup(command.Command):
volume_client.backups.delete(backup_id)
-class ListBackup(command.Lister):
- """List backups"""
+class DeleteBackup(DeleteVolumeBackup):
+ """Delete backup(s)"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup delete`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup delete" instead.'))
+ return super(DeleteBackup, self).take_action(parsed_args)
+
+
+class ListVolumeBackup(command.Lister):
+ """List volume backups"""
def get_parser(self, prog_name):
- parser = super(ListBackup, self).get_parser(prog_name)
+ parser = super(ListVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
'--long',
action='store_true',
@@ -142,11 +177,28 @@ class ListBackup(command.Lister):
) for s in data))
-class RestoreBackup(command.Command):
- """Restore backup"""
+class ListBackup(ListVolumeBackup):
+ """List backups"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup list`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup list" instead.'))
+ return super(ListBackup, self).take_action(parsed_args)
+
+
+class RestoreVolumeBackup(command.Command):
+ """Restore volume backup"""
def get_parser(self, prog_name):
- parser = super(RestoreBackup, self).get_parser(prog_name)
+ parser = super(RestoreVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
'backup',
metavar='<backup>',
@@ -169,11 +221,28 @@ class RestoreBackup(command.Command):
destination_volume.id)
-class ShowBackup(command.ShowOne):
- """Display backup details"""
+class RestoreBackup(RestoreVolumeBackup):
+ """Restore backup"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup restore`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup restore" instead.'))
+ return super(RestoreBackup, self).take_action(parsed_args)
+
+
+class ShowVolumeBackup(command.ShowOne):
+ """Display volume backup details"""
def get_parser(self, prog_name):
- parser = super(ShowBackup, self).get_parser(prog_name)
+ parser = super(ShowVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
'backup',
metavar='<backup>',
@@ -187,3 +256,20 @@ class ShowBackup(command.ShowOne):
parsed_args.backup)
backup._info.pop('links')
return zip(*sorted(six.iteritems(backup._info)))
+
+
+class ShowBackup(ShowVolumeBackup):
+ """Display backup details"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup show`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup show" instead.'))
+ return super(ShowBackup, self).take_action(parsed_args)
diff --git a/openstackclient/volume/v2/backup.py b/openstackclient/volume/v2/backup.py
index 3d27c121..07c1c94f 100644
--- a/openstackclient/volume/v2/backup.py
+++ b/openstackclient/volume/v2/backup.py
@@ -28,11 +28,11 @@ from openstackclient.i18n import _
LOG = logging.getLogger(__name__)
-class CreateBackup(command.ShowOne):
- """Create new backup"""
+class CreateVolumeBackup(command.ShowOne):
+ """Create new volume backup"""
def get_parser(self, prog_name):
- parser = super(CreateBackup, self).get_parser(prog_name)
+ parser = super(CreateVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
"volume",
metavar="<volume>",
@@ -93,11 +93,28 @@ class CreateBackup(command.ShowOne):
return zip(*sorted(six.iteritems(backup._info)))
-class DeleteBackup(command.Command):
- """Delete backup(s)"""
+class CreateBackup(CreateVolumeBackup):
+ """Create new backup"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup create`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup create" instead.'))
+ return super(CreateBackup, self).take_action(parsed_args)
+
+
+class DeleteVolumeBackup(command.Command):
+ """Delete volume backup(s)"""
def get_parser(self, prog_name):
- parser = super(DeleteBackup, self).get_parser(prog_name)
+ parser = super(DeleteVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
"backups",
metavar="<backup>",
@@ -134,11 +151,28 @@ class DeleteBackup(command.Command):
raise exceptions.CommandError(msg)
-class ListBackup(command.Lister):
- """List backups"""
+class DeleteBackup(DeleteVolumeBackup):
+ """Delete backup(s)"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup delete`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup delete" instead.'))
+ return super(DeleteBackup, self).take_action(parsed_args)
+
+
+class ListVolumeBackup(command.Lister):
+ """List volume backups"""
def get_parser(self, prog_name):
- parser = super(ListBackup, self).get_parser(prog_name)
+ parser = super(ListVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
"--long",
action="store_true",
@@ -188,11 +222,28 @@ class ListBackup(command.Lister):
) for s in data))
-class RestoreBackup(command.ShowOne):
- """Restore backup"""
+class ListBackup(ListVolumeBackup):
+ """List backups"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup list`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup list" instead.'))
+ return super(ListBackup, self).take_action(parsed_args)
+
+
+class RestoreVolumeBackup(command.ShowOne):
+ """Restore volume backup"""
def get_parser(self, prog_name):
- parser = super(RestoreBackup, self).get_parser(prog_name)
+ parser = super(RestoreVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
"backup",
metavar="<backup>",
@@ -213,11 +264,28 @@ class RestoreBackup(command.ShowOne):
return volume_client.restores.restore(backup.id, destination_volume.id)
-class ShowBackup(command.ShowOne):
- """Display backup details"""
+class RestoreBackup(RestoreVolumeBackup):
+ """Restore backup"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup restore`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup restore" instead.'))
+ return super(RestoreBackup, self).take_action(parsed_args)
+
+
+class ShowVolumeBackup(command.ShowOne):
+ """Display volume backup details"""
def get_parser(self, prog_name):
- parser = super(ShowBackup, self).get_parser(prog_name)
+ parser = super(ShowVolumeBackup, self).get_parser(prog_name)
parser.add_argument(
"backup",
metavar="<backup>",
@@ -231,3 +299,20 @@ class ShowBackup(command.ShowOne):
parsed_args.backup)
backup._info.pop("links", None)
return zip(*sorted(six.iteritems(backup._info)))
+
+
+class ShowBackup(ShowVolumeBackup):
+ """Display backup details"""
+
+ # TODO(Huanxuan Ao): Remove this class and ``backup show`` command
+ # two cycles after Newton.
+
+ # This notifies cliff to not display the help for this command
+ deprecated = True
+
+ log = logging.getLogger('deprecated')
+
+ def take_action(self, parsed_args):
+ self.log.warning(_('This command has been deprecated. '
+ 'Please use "volume backup show" instead.'))
+ return super(ShowBackup, self).take_action(parsed_args)
diff --git a/releasenotes/notes/bp-backup-snapshot-renamed-for-volume-resource-2d2d13ea8489a61f.yaml b/releasenotes/notes/bp-backup-snapshot-renamed-for-volume-resource-2d2d13ea8489a61f.yaml
new file mode 100644
index 00000000..c9851409
--- /dev/null
+++ b/releasenotes/notes/bp-backup-snapshot-renamed-for-volume-resource-2d2d13ea8489a61f.yaml
@@ -0,0 +1,8 @@
+---
+features:
+ - Add new commands ``volume backup create/delete/list/show/restore``. It is
+ used to replace the old commands ``backup create/delete/list/show/restore``.
+ [Blueprint `backup-snapshot-renamed-for-volume-resource <https://blueprints.launchpad.net/python-openstackclient/+spec/backup-snapshot-renamed-for-volume-resource>`_]
+deprecations:
+ - Deprecate commands ``backup create/delete/list/show/restore``.
+ [Blueprint `backup-snapshot-renamed-for-volume-resource <https://blueprints.launchpad.net/python-openstackclient/+spec/backup-snapshot-renamed-for-volume-resource>`_]
diff --git a/setup.cfg b/setup.cfg
index 72a4589b..78eaf344 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -458,6 +458,12 @@ openstack.volume.v1 =
volume_show = openstackclient.volume.v1.volume:ShowVolume
volume_unset = openstackclient.volume.v1.volume:UnsetVolume
+ volume_backup_create = openstackclient.volume.v1.backup:CreateVolumeBackup
+ volume_backup_delete = openstackclient.volume.v1.backup:DeleteVolumeBackup
+ volume_backup_list = openstackclient.volume.v1.backup:ListVolumeBackup
+ volume_backup_restore = openstackclient.volume.v1.backup:RestoreVolumeBackup
+ volume_backup_show = openstackclient.volume.v1.backup:ShowVolumeBackup
+
volume_type_create = openstackclient.volume.v1.volume_type:CreateVolumeType
volume_type_delete = openstackclient.volume.v1.volume_type:DeleteVolumeType
volume_type_list = openstackclient.volume.v1.volume_type:ListVolumeType
@@ -499,6 +505,12 @@ openstack.volume.v2 =
volume_show = openstackclient.volume.v2.volume:ShowVolume
volume_unset = openstackclient.volume.v2.volume:UnsetVolume
+ volume_backup_create = openstackclient.volume.v2.backup:CreateVolumeBackup
+ volume_backup_delete = openstackclient.volume.v2.backup:DeleteVolumeBackup
+ volume_backup_list = openstackclient.volume.v2.backup:ListVolumeBackup
+ volume_backup_restore = openstackclient.volume.v2.backup:RestoreVolumeBackup
+ volume_backup_show = openstackclient.volume.v2.backup:ShowVolumeBackup
+
volume_type_create = openstackclient.volume.v2.volume_type:CreateVolumeType
volume_type_delete = openstackclient.volume.v2.volume_type:DeleteVolumeType
volume_type_list = openstackclient.volume.v2.volume_type:ListVolumeType