diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-10-24 19:10:04 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-10-24 19:10:04 +0000 |
| commit | fbf7ab67a853d3fda2670c352f73069522495f52 (patch) | |
| tree | aa58fe492933b0eb68e49727794bc0cae7e2aa8f | |
| parent | ec8d2569f5ab453279913ec1d0c4684235b66a08 (diff) | |
| parent | 7c9761b3bb52788021b5bf0eb9726af833db4074 (diff) | |
Merge "Fix error on invalid delete_on_termination value"
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 6 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_servers.py | 23 |
2 files changed, 28 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index c5e829d52..8288f0424 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -796,7 +796,11 @@ class Controller(wsgi.Controller): block_device_mapping = None if self.ext_mgr.is_loaded('os-volumes'): - block_device_mapping = server_dict.get('block_device_mapping') + block_device_mapping = server_dict.get('block_device_mapping', []) + for bdm in block_device_mapping: + if 'delete_on_termination' in bdm: + bdm['delete_on_termination'] = utils.bool_from_str( + bdm['delete_on_termination']) ret_resv_id = False # min_count and max_count are optional. If they exist, they may come diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 117ff26a4..58b81bf0c 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -2099,6 +2099,29 @@ class ServersControllerCreateTest(test.TestCase): self.stubs.Set(compute_api.API, 'create', create) self._test_create_extra(params) + def test_create_instance_with_bdm_delete_on_termination(self): + self.ext_mgr.extensions = {'os-volumes': 'fake'} + bdm = [{'device_name': 'foo1', 'delete_on_termination': 1}, + {'device_name': 'foo2', 'delete_on_termination': True}, + {'device_name': 'foo3', 'delete_on_termination': 'invalid'}, + {'device_name': 'foo4', 'delete_on_termination': 0}, + {'device_name': 'foo5', 'delete_on_termination': False}] + expected_dbm = [ + {'device_name': 'foo1', 'delete_on_termination': True}, + {'device_name': 'foo2', 'delete_on_termination': True}, + {'device_name': 'foo3', 'delete_on_termination': False}, + {'device_name': 'foo4', 'delete_on_termination': False}, + {'device_name': 'foo5', 'delete_on_termination': False}] + params = {'block_device_mapping': bdm} + old_create = compute_api.API.create + + def create(*args, **kwargs): + self.assertEqual(kwargs['block_device_mapping'], expected_dbm) + return old_create(*args, **kwargs) + + self.stubs.Set(compute_api.API, 'create', create) + self._test_create_extra(params) + def test_create_instance_with_user_data_enabled(self): self.ext_mgr.extensions = {'os-user-data': 'fake'} user_data = 'fake' |
