Reviewed: https://review.openstack.org/291203 Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=589660af7c4ac3903f209c912e89795b8d62a122 Submitter: Jenkins Branch: master
commit 589660af7c4ac3903f209c912e89795b8d62a122 Author: Dongcan Ye <hellocho...@gmail.com> Date: Thu Mar 10 22:09:24 2016 +0800 VMware: Always update image size for sparse image In some situation, if image cache folder already exists, we may not update image size. This will cause extend root disk failed in situation using sparse image and use_linked_clone. This patch update image size for sparse image whether the image cache folder exists or not. Change-Id: I017194e7314458a493ccc942bef34209a902809e Closes-Bug: #1555644 ** Changed in: nova Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1555644 Title: VMware: Extending virtual disk failed with error: capacity Status in OpenStack Compute (nova): Fix Released Bug description: Scenario A: 1. image disk type: sparse 2. image size(2.3G) 3. flavor1(root_disk: 5G) 4. use_linked_clone Scenario B: 1. image disk type: sparse 2. image size(2.3G) 3. flavor2(root_disk: 6G) 4. use_linked_clone I boot an instance with sparse image disk, image size is 2.3G, Nova flavor root disk is 5G, everything got well(Scenario A). Then I boot another instance with new flavor root disk 6G(Scenario B), it raises error: 2016-03-10 17:31:56.350 3211 ERROR nova.compute.manager [req-a3e93241-5f54-485a-a7f0-2e1e0ebad92d 4412e38ec9814b96a03e63097ec51f1a 8f75187cd29f4715881f450646fc6e08 - - -] [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] Instance failed to spawn 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] Traceback (most recent call last): 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2461, in _build_resources 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] yield resources 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2333, in _build_and_run_instance 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] block_device_info=block_device_info) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py", line 480, in spawn 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] admin_password, network_info, block_device_info) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py", line 636, in spawn 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] self._use_disk_image_as_linked_clone(vm_ref, vi) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py", line 1747, in _use_disk_image_as_linked_clone 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] vi.dc_info, vi.ii, vi.instance, str(sized_disk_ds_loc)) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py", line 224, in _extend_if_required 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] root_vmdk_path, dc_info.ref) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py", line 202, in _extend_virtual_disk 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] self._delete_datastore_file(ds_path, dc_ref) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 85, in __exit__ 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] six.reraise(self.type_, self.value, self.tb) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py", line 193, in _extend_virtual_disk 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] self._session._wait_for_task(vmdk_extend_task) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py", line 680, in _wait_for_task 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] return self.wait_for_task(task_ref) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/oslo_vmware/api.py", line 380, in wait_for_task 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] return evt.wait() 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 121, in wait 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] return hubs.get_hub().switch() 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 294, in switch 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] return self.greenlet.switch() 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/oslo_vmware/common/loopingcall.py", line 76, in _inner 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] self.f(*self.args, **self.kw) 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] File "/usr/lib/python2.7/site-packages/oslo_vmware/api.py", line 417, in _poll_task 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] raise task_ex 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] VMwareDriverException: \u6307\u5b9a\u7684\u53c2\u6570\u9519\u8bef\u3002 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] capacity 2016-03-10 17:31:56.350 3211 TRACE nova.compute.manager [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] 2016-03-10 17:31:56.352 3211 INFO nova.compute.manager [req-a3e93241-5f54-485a-a7f0-2e1e0ebad92d 4412e38ec9814b96a03e63097ec51f1a 8f75187cd29f4715881f450646fc6e08 - - -] [instance: 22ea4a58-2296-40fc-b69b-a511a3b6d925] Terminating instance Because the cache_image_folder already exists, it not update image size. In _use_disk_image_as_linked_clone function, root_gb greater than image file size, so it excutes _extend_virtual_disk error. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1555644/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp