summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ironic/drivers/modules/ansible/playbooks/library/root_hints.py6
-rw-r--r--releasenotes/notes/ansible-device-name-filtering-0adfca7d8ba4cbcc.yaml9
2 files changed, 15 insertions, 0 deletions
diff --git a/ironic/drivers/modules/ansible/playbooks/library/root_hints.py b/ironic/drivers/modules/ansible/playbooks/library/root_hints.py
index eeb9b7e68..2826666e6 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 000000000..8cc47230c
--- /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.