From 61cde9c8e85182073b53e3736f8568f2a6d1453c Mon Sep 17 00:00:00 2001
From: Jens Rosenboom <j.rosenboom@x-ion.de>
Date: Wed, 29 Mar 2017 14:17:49 +0000
Subject: [PATCH] Fix block-device-mapping when volume_size is empty

The Nova API responds with an validation error when a bdm is submitted
containing an empty volume_size. So instead omit that attribute when it
is empty.

Change-Id: Iba905fca8c440a03e828c20922f3b813bba3fa3a
Closes-Bug: 1677236
---
 openstackclient/compute/v2/server.py                 | 2 +-
 openstackclient/tests/unit/compute/v2/test_server.py | 3 +--
 releasenotes/notes/bug-1677236-7de9d11c3f0fb5ed.yaml | 6 ++++++
 3 files changed, 8 insertions(+), 3 deletions(-)
 create mode 100644 releasenotes/notes/bug-1677236-7de9d11c3f0fb5ed.yaml

diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 1fe5bb0d10..3ae7516765 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -544,7 +544,7 @@ class CreateServer(command.ShowOne):
                     else:
                         mapping['source_type'] = 'volume'
                     mapping['destination_type'] = 'volume'
-                    if len(dev_map) > 2:
+                    if len(dev_map) > 2 and dev_map[2]:
                         mapping['volume_size'] = dev_map[2]
                     if len(dev_map) > 3:
                         mapping['delete_on_termination'] = dev_map[3]
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 7691ef5945..a0716e4c85 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -817,8 +817,7 @@ class TestServerCreate(TestServer):
                 'uuid': real_volume_mapping.split(':', 1)[0],
                 'destination_type': 'volume',
                 'source_type': 'volume',
-                'delete_on_termination': '0',
-                'volume_size': ''
+                'delete_on_termination': '0'
             }],
             nics=[],
             scheduler_hints={},
diff --git a/releasenotes/notes/bug-1677236-7de9d11c3f0fb5ed.yaml b/releasenotes/notes/bug-1677236-7de9d11c3f0fb5ed.yaml
new file mode 100644
index 0000000000..d67cc5c9c8
--- /dev/null
+++ b/releasenotes/notes/bug-1677236-7de9d11c3f0fb5ed.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fix creating a server with a block-device-mapping when volume_size
+    is empty.
+    [Bug `1677236 <https://bugs.launchpad.net/bugs/1652827>`_]