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
(cherry picked from commit 0071d28460)
This commit is contained in:
Julia Kreger 2020-08-21 07:35:55 -07:00
parent df9b79907c
commit 03c772c77a
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.