yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #72783
[Bug 1766692] Re: instance.uuid no longer being a str breaks powervm scsi disconnect
Reviewed: https://review.openstack.org/564276
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=864acf7c8db7c9a25a919b7ad698f0d078a4dec0
Submitter: Zuul
Branch: master
commit 864acf7c8db7c9a25a919b7ad698f0d078a4dec0
Author: Eric Fried <efried@xxxxxxxxxx>
Date: Wed Apr 25 11:34:22 2018 -0500
Bump pypowervm minimum to 1.1.15
The referenced bug is fixed in pypowervm 1.1.15. Without the fix,
PowerVM device detach during destroy (and therefore PowerVM CI) is
broken.
Change-Id: Icaabadfb17dd87207d99938224713a78dc925674
Depends-On: https://review.openstack.org/#/c/564275/
Closes-Bug: #1766692
** 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/1766692
Title:
instance.uuid no longer being a str breaks powervm scsi disconnect
Status in OpenStack Compute (nova):
Fix Released
Status in nova-powervm:
Fix Released
Status in pypowervm:
Fix Released
Bug description:
Long-standing code in pypowervm [1] used isinstance(..., str) to help
identify whether an input was a UUID or an integer short ID. This is
used with to find SCSI mappings [2] with Instance.uuid [3] when
disconnecting a disk during destroy [4].
Then this change in oslo.versionedobjects happened [5], resulting in
instance.uuid no longer being a str. So the check at [1] fails, and
we try to int() a UUID string, resulting in [6], pasted here in case
that link expires:
PowerVM error destroying instance.: ValueError: invalid literal for int() with base 10: '4E27E1E6-6A24-4F0A-8E7B-2BBE7B4A28BA'
Traceback (most recent call last):
File "/opt/stack/nova-powervm/nova_powervm/virt/powervm/driver.py", line 672, in _destroy
_setup_flow_and_run()
File "/opt/stack/nova-powervm/nova_powervm/virt/powervm/driver.py", line 668, in _setup_flow_and_run
tf_base.run(flow, instance=instance)
File "/opt/stack/nova-powervm/nova_powervm/virt/powervm/tasks/base.py", line 40, in run
return eng.run()
File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 247, in run
for _state in self.run_iter(timeout=timeout):
File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 340, in run_iter
failure.Failure.reraise_if_any(er_failures)
File "/usr/local/lib/python2.7/dist-packages/taskflow/types/failure.py", line 336, in reraise_if_any
failures[0].reraise()
File "/usr/local/lib/python2.7/dist-packages/taskflow/types/failure.py", line 343, in reraise
six.reraise(*self._exc_info)
File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/executor.py", line 53, in _execute_task
result = task.execute(**arguments)
File "/opt/stack/nova-powervm/nova_powervm/virt/powervm/tasks/storage.py", line 452, in execute
self.instance, stg_ftsk=self.stg_ftsk, disk_type=self.disk_type)
File "/opt/stack/nova-powervm/nova_powervm/virt/powervm/disk/ssp.py", line 174, in disconnect_disk
match_func=match_func)
File "/usr/local/lib/python2.7/dist-packages/pypowervm/tasks/scsi_mapper.py", line 503, in find_maps
is_uuid, client_id = uuid.id_or_uuid(client_lpar_id)
File "/usr/local/lib/python2.7/dist-packages/pypowervm/utils/uuid.py", line 55, in id_or_uuid
ret_id = int(an_id)
ValueError: invalid literal for int() with base 10: '4E27E1E6-6A24-4F0A-8E7B-2BBE7B4A28BA'
(Okay, our bad for using str at all - though to be fair, it's possible
that code predates the very existence of py3.)
The right fix is for [1] to use is_uuid_like from oslo.utils. This
shall be done. However, since [5] was backported to queens and pike,
unless we can get away with backporting requirements changes, we may
have to do something backportable in nova-powervm and nova as well.
[1] https://github.com/powervm/pypowervm/blob/release/1.1.14/pypowervm/utils/uuid.py#L50
[2] https://github.com/powervm/pypowervm/blob/release/1.1.14/pypowervm/tasks/scsi_mapper.py#L503
[3] https://github.com/openstack/nova/blob/1605391084d6a1f57384ef48bad8ca2185cf6fa7/nova/virt/powervm/disk/ssp.py#L128
[4] https://github.com/openstack/nova/blob/1605391084d6a1f57384ef48bad8ca2185cf6fa7/nova/virt/powervm/driver.py#L272
[5] https://review.openstack.org/#/q/Ic6b6308fb1960ec40407e6efde30137b64543e72
[6] http://184.172.12.213/58/557958/10/check/nova-out-of-tree-pvm/c1d7e99/logs/n-cpu.txt.gz?#_Apr_20_08_51_16_452651
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1766692/+subscriptions
References