Bug 1404116

Summary: root hints vendor / model / size does not work for virtual environment.
Product: Red Hat OpenStack Reporter: Jaison Raju <jraju>
Component: openstack-ironic-python-agentAssignee: Lucas Alvares Gomes <lmartins>
Status: CLOSED DUPLICATE QA Contact: Raviv Bar-Tal <rbartal>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 10.0 (Newton)CC: lmartins, mburns, slinaber
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-12-13 09:53:33 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
introspection / ironic logs none

Description Jaison Raju 2016-12-13 06:19:49 UTC
Description of problem:
In virtual environment , i have emulated root disk as scsi disk & 7 other disks as virtio on ceph nodes .
Introspection fails for ceph nodes with following error .
-------------------------------------------------------
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root [-] Unexpected error dispatching get_os_install_device to manager <ironic_python_agent.hardware.GenericHardwareManager object at 0x307d090>: Error finding the disk or partition device to deploy the image onto: No suitable device was found for deployment using these hints {u'vendor': u'ATA'}
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root Traceback (most recent call last):
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root   File "/usr/lib/python2.7/site-packages/ironic_python_agent/hardware.py", line 1062, in dispatch_to_managers
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root     return getattr(manager, method)(*args, **kwargs)
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root   File "/usr/lib/python2.7/site-packages/ironic_python_agent/hardware.py", line 688, in get_os_install_device
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root     "deployment using these hints %s" % root_device_hints)
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root DeviceNotFound: Error finding the disk or partition device to deploy the image onto: No suitable device was found for deployment using these hints {u'vendor': u'ATA'}
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.831 390 ERROR root
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.833 390 ERROR root [-] Command execution error: Error finding the disk or partition device to deploy the image onto: No suitable device was found for deployment using these hints {u'vendor': u'ATA'}
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.833 390 ERROR root Traceback (most recent call last):
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.833 390 ERROR root   File "/usr/lib/python2.7/site-packages/ironic_python_agent/extensions/base.py", line 251, in execute_command
Dec 08 21:33:24 host-192-0-2-12 ironic-python-agent[390]: 2016-12-08 21:33:24.833 390 ERROR root     result = ext.execute(command_part, **kwargs)

------------------------------------------------------------------------------

This failure is only seen for 'vendor / model / size' & not for name .
The config known to fail :
   55  for i in `cat ceph.txt`; do ironic node-update $i replace properties/root_device='{"vendor":"ATA"}' ; done
   68  for i in `cat ceph.txt`; do ironic node-update $i replace properties/root_device='{"model":"QEMU HARDDISK"}' ; done
   96  for i in `cat ceph.txt`; do ironic node-update $i replace properties/root_device='{"size":"44"}' ; done
The config known to work :
   86  for i in `cat ceph.txt`; do ironic node-update $i replace properties/root_device='{"name":"/dev/sda"}' ; done

Version-Release number of selected component (if applicable):
2016-11-10.3

How reproducible:
Always on virtual environment deployed via instack-virt-setup .
Not on baremetal ironic nodes .

Steps to Reproduce:
1. Deploy virtual env with instack-virt-setup .
2. Add one or more disk to one vm .
3. deploy undercloud + images .
4. introspect the node. 
5. check data in introspected data & set root hints with either 'vendor / model / size'  .

Actual results:
Introspection fails.

Expected results:
Introspection should work if the data matches the 'vendor / model / size' for previous introspection data .

Additional info:
PFA logs . 
I am not quite sure if this is a bug , but this is a part of script that i used for RHOS7/8/9 & it worked well on virtual environments .
I tested on baremetal using vendor root hint but that worked .

Comment 1 Jaison Raju 2016-12-13 07:45:27 UTC
Created attachment 1231091 [details]
introspection / ironic logs

Comment 2 Dmitry Tantsur 2016-12-13 09:53:33 UTC

*** This bug has been marked as a duplicate of bug 1398288 ***

Comment 3 Lucas Alvares Gomes 2016-12-13 10:02:29 UTC
@Jaison,

Ok, this is already marked as duplicated... But can you please enable the debug in IPA so that it will log the device's property as well as the value of the root device hint it's trying to match ?

To do it just add "ipa-debug=1" to the kernel command line*

* You can edit the /etc/ironic/ironic.conf file and append it to the "pxe_append_params" config option