Ansible deploy - Ignore invalid devices

This change updates the ansible deploy driver to exclude
devices with "sr", "loop", and "mem" which can appear in the
devices list for consideration as the root device.

This change effectively causes them to be ignored.

Change-Id: I72a422553ee992d313b83df091af2c9deb8393b5
This commit is contained in:
Julia Kreger 2020-08-21 07:35:55 -07:00
parent 1e25135bde
commit 0071d28460
2 changed files with 15 additions and 0 deletions

View File

@ -17,6 +17,8 @@ GIB = 1 << 30
EXTRA_PARAMS = set(['wwn', 'serial', 'wwn_with_extension',
'wwn_vendor_extension'])
IGNORE_DEVICES = ['sr', 'loop', 'mem', 'fd']
# NOTE: ansible calculates device size as float with 2-digits precision,
# Ironic requires size in GiB, if we will use ansible size parameter
@ -46,6 +48,10 @@ def root_hint(hints, devices):
hint = None
name = hints.pop('name', None)
for device in devices:
if any(x in device for x in IGNORE_DEVICES):
# NOTE(TheJulia): Devices like CD roms, Loop devices, and ramdisks
# should not be considered as target devices.
continue
for key in hints:
if hints[key] != devices[device].get(key):
break

View File

@ -0,0 +1,9 @@
---
fixes:
- |
Fixes an issue with the ``ansible`` deployment interface where automatic
root deviec selection would accidently choose the system CD-ROM device,
which was likely to occur when the ansible deployment interface was used
with virtual media boot.
The ``ansible`` deployment interface now ignores all Ramdisks, Loopbacks,
CD-ROMs, and floppy disk devices.