Fix exception when using boot_from_volume for create_server
It is possible for create_server to accept a dict for image, however _get_boot_from_volume_kwargs did expect that. This created the following exception: Traceback (most recent call last): File "/opt/stack/new/nodepool/nodepool/nodepool.py", line 358, in _run self._launchNode() File "/opt/stack/new/nodepool/nodepool/nodepool.py", line 290, in _launchNode volume_size=self._label.volume_size) File "/opt/stack/new/nodepool/nodepool/provider_manager.py", line 235, in createServer return self._client.create_server(wait=False, **create_args) File "<decorator-gen-6>", line 2, in create_server File "/opt/stack/new/nodepool-venv/local/lib/python2.7/site-packages/shade/_utils.py", line 393, in func_wrapper return func(*args, **kwargs) File "/opt/stack/new/nodepool-venv/local/lib/python2.7/site-packages/shade/openstackcloud.py", line 5517, in create_server volumes=volumes, kwargs=kwargs) File "/opt/stack/new/nodepool-venv/local/lib/python2.7/site-packages/shade/openstackcloud.py", line 5333, in _get_boot_from_volume_kwargs cloud=self.name, region=self.region_name)) OpenStackCloudException: Image {'id': u'1cb47019-08a4-4b9c-ae62-737b547648b6'} is not a valid image in devstack:RegionOne Now, check if image is a dictonary, like we did in create_server. Also add an ansible test for os_server so we additional code coverage. Change-Id: If58cd96b0b9ce4569120d60fbceb2c23b2f7641d Signed-off-by: Paul Belanger <pabelanger@redhat.com>
This commit is contained in:
parent
7cfb886b6f
commit
be0a0c99f3
@ -5311,6 +5311,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
def _get_boot_from_volume_kwargs(
|
||||
self, image, boot_from_volume, boot_volume, volume_size,
|
||||
terminate_volume, volumes, kwargs):
|
||||
"""Return block device mappings
|
||||
|
||||
:param image: Image dict, name or id to boot with.
|
||||
|
||||
"""
|
||||
if boot_volume or boot_from_volume or volumes:
|
||||
kwargs.setdefault('block_device_mapping_v2', [])
|
||||
else:
|
||||
@ -5337,7 +5342,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
kwargs['image'] = None
|
||||
elif boot_from_volume:
|
||||
|
||||
if hasattr(image, 'id'):
|
||||
if isinstance(image, dict):
|
||||
image_obj = image
|
||||
else:
|
||||
image_obj = self.get_image(image)
|
||||
|
@ -66,3 +66,27 @@
|
||||
state: absent
|
||||
name: "{{ server_name }}"
|
||||
wait: true
|
||||
|
||||
- name: Create server from volume
|
||||
os_server:
|
||||
cloud: "{{ cloud }}"
|
||||
state: present
|
||||
name: "{{ server_name }}"
|
||||
image: "{{ image }}"
|
||||
flavor: "{{ flavor }}"
|
||||
network: "{{ server_network }}"
|
||||
auto_floating_ip: false
|
||||
boot_from_volume: true
|
||||
volume_size: 5
|
||||
terminate_volume: true
|
||||
wait: true
|
||||
register: server
|
||||
|
||||
- debug: var=server
|
||||
|
||||
- name: Delete server with volume
|
||||
os_server:
|
||||
cloud: "{{ cloud }}"
|
||||
state: absent
|
||||
name: "{{ server_name }}"
|
||||
wait: true
|
||||
|
Loading…
x
Reference in New Issue
Block a user