From 0071d28460f1c0baa449d8f7920f4cf36e876bdc Mon Sep 17 00:00:00 2001 From: Julia Kreger Date: Fri, 21 Aug 2020 07:35:55 -0700 Subject: [PATCH] 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 --- .../modules/ansible/playbooks/library/root_hints.py | 6 ++++++ .../ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml | 9 +++++++++ 2 files changed, 15 insertions(+) create mode 100644 releasenotes/notes/ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml diff --git a/ironic/drivers/modules/ansible/playbooks/library/root_hints.py b/ironic/drivers/modules/ansible/playbooks/library/root_hints.py index eeb9b7e687..2826666e6b 100644 --- a/ironic/drivers/modules/ansible/playbooks/library/root_hints.py +++ b/ironic/drivers/modules/ansible/playbooks/library/root_hints.py @@ -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 diff --git a/releasenotes/notes/ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml b/releasenotes/notes/ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml new file mode 100644 index 0000000000..8cc47230ce --- /dev/null +++ b/releasenotes/notes/ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml @@ -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.