From 311e775c81419c3b28d03e616a0e415a614b9cff Mon Sep 17 00:00:00 2001
From: Ivan Kolodyazhny <e0ne@e0ne.info>
Date: Thu, 17 Mar 2016 18:35:41 +0200
Subject: [PATCH] Make snapshot and backup name optional

Cinder does not require snapshot and backup name. These arguments are
optional.

Change-Id: I05d59efc9642205a25684bf0b77758328296d959
---
 .../tests/volume/v2/test_backup.py            | 24 +++++++++++++++++++
 .../tests/volume/v2/test_snapshot.py          | 24 +++++++++++++++++++
 openstackclient/volume/v1/backup.py           |  1 -
 openstackclient/volume/v1/snapshot.py         |  1 -
 openstackclient/volume/v2/backup.py           |  1 -
 openstackclient/volume/v2/snapshot.py         |  1 -
 ...backup-name-optional-01971d33640ef1c8.yaml |  4 ++++
 7 files changed, 52 insertions(+), 4 deletions(-)
 create mode 100644 releasenotes/notes/make-snapshot-and-backup-name-optional-01971d33640ef1c8.yaml

diff --git a/openstackclient/tests/volume/v2/test_backup.py b/openstackclient/tests/volume/v2/test_backup.py
index cc8dff5a36..0e906e7bf1 100644
--- a/openstackclient/tests/volume/v2/test_backup.py
+++ b/openstackclient/tests/volume/v2/test_backup.py
@@ -77,6 +77,30 @@ class TestBackupCreate(TestBackup):
         self.assertEqual(columns, volume_fakes.BACKUP_columns)
         self.assertEqual(data, volume_fakes.BACKUP_data)
 
+    def test_backup_create_without_name(self):
+        arglist = [
+            volume_fakes.volume_id,
+            "--description", volume_fakes.backup_description,
+            "--container", volume_fakes.backup_name
+        ]
+        verifylist = [
+            ("volume", volume_fakes.volume_id),
+            ("description", volume_fakes.backup_description),
+            ("container", volume_fakes.backup_name)
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.backups_mock.create.assert_called_with(
+            volume_fakes.volume_id,
+            container=volume_fakes.backup_name,
+            name=None,
+            description=volume_fakes.backup_description
+        )
+        self.assertEqual(columns, volume_fakes.BACKUP_columns)
+        self.assertEqual(data, volume_fakes.BACKUP_data)
+
 
 class TestBackupDelete(TestBackup):
 
diff --git a/openstackclient/tests/volume/v2/test_snapshot.py b/openstackclient/tests/volume/v2/test_snapshot.py
index 87e2fccfa8..8c75dfb26e 100644
--- a/openstackclient/tests/volume/v2/test_snapshot.py
+++ b/openstackclient/tests/volume/v2/test_snapshot.py
@@ -75,6 +75,30 @@ class TestSnapshotCreate(TestSnapshot):
         self.assertEqual(columns, volume_fakes.SNAPSHOT_columns)
         self.assertEqual(data, volume_fakes.SNAPSHOT_data)
 
+    def test_snapshot_create_without_name(self):
+        arglist = [
+            volume_fakes.volume_id,
+            "--description", volume_fakes.snapshot_description,
+            "--force"
+        ]
+        verifylist = [
+            ("volume", volume_fakes.volume_id),
+            ("description", volume_fakes.snapshot_description),
+            ("force", True)
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.snapshots_mock.create.assert_called_with(
+            volume_fakes.volume_id,
+            force=True,
+            name=None,
+            description=volume_fakes.snapshot_description
+        )
+        self.assertEqual(columns, volume_fakes.SNAPSHOT_columns)
+        self.assertEqual(data, volume_fakes.SNAPSHOT_data)
+
 
 class TestSnapshotDelete(TestSnapshot):
 
diff --git a/openstackclient/volume/v1/backup.py b/openstackclient/volume/v1/backup.py
index 32f39fb539..40b603151f 100644
--- a/openstackclient/volume/v1/backup.py
+++ b/openstackclient/volume/v1/backup.py
@@ -41,7 +41,6 @@ class CreateBackup(command.ShowOne):
         parser.add_argument(
             '--name',
             metavar='<name>',
-            required=False,
             help='Name of the backup',
         )
         parser.add_argument(
diff --git a/openstackclient/volume/v1/snapshot.py b/openstackclient/volume/v1/snapshot.py
index 95200e4074..c54bac8aef 100644
--- a/openstackclient/volume/v1/snapshot.py
+++ b/openstackclient/volume/v1/snapshot.py
@@ -36,7 +36,6 @@ class CreateSnapshot(command.ShowOne):
         parser.add_argument(
             '--name',
             metavar='<name>',
-            required=True,
             help='Name of the snapshot',
         )
         parser.add_argument(
diff --git a/openstackclient/volume/v2/backup.py b/openstackclient/volume/v2/backup.py
index 64ca97ae8a..016a414c67 100644
--- a/openstackclient/volume/v2/backup.py
+++ b/openstackclient/volume/v2/backup.py
@@ -35,7 +35,6 @@ class CreateBackup(command.ShowOne):
         parser.add_argument(
             "--name",
             metavar="<name>",
-            required=True,
             help="Name of the backup"
         )
         parser.add_argument(
diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py
index 4d00b72623..c9e502976a 100644
--- a/openstackclient/volume/v2/snapshot.py
+++ b/openstackclient/volume/v2/snapshot.py
@@ -36,7 +36,6 @@ class CreateSnapshot(command.ShowOne):
         parser.add_argument(
             "--name",
             metavar="<name>",
-            required=True,
             help="Name of the snapshot"
         )
         parser.add_argument(
diff --git a/releasenotes/notes/make-snapshot-and-backup-name-optional-01971d33640ef1c8.yaml b/releasenotes/notes/make-snapshot-and-backup-name-optional-01971d33640ef1c8.yaml
new file mode 100644
index 0000000000..8ecbe6b6b3
--- /dev/null
+++ b/releasenotes/notes/make-snapshot-and-backup-name-optional-01971d33640ef1c8.yaml
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Make ``--name`` optional in ``volume snapshot create`` and
+    ``volume backup create`` commands.