Validation Error raised on RAID devices of a VMHost when refreshing

Bug #1990299 reported by Christian Grabowski
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MAAS
Triaged
High
Unassigned

Bug Description

It appears we throw the following exception when a LXD VMHost with RAID configured refreshes and processes commissioning results:

2022-09-20 16:29:13 metadataserver.api: [critical] seeker02.maas(sfk63n): commissioning script '50-maas-01-commissioning' failed during post-processing.
        Traceback (most recent call last):
          File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 856, in signal
            target_status = process(node, request, status)
          File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 680, in _process_commissioning
            self._store_results(
          File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 565, in _store_results
            script_result.store_result(
          File "/usr/lib/python3/dist-packages/metadataserver/models/scriptresult.py", line 372, in store_result
            signal_status = try_or_log_event(
        --- <exception caught here> ---
          File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 483, in try_or_log_event
            func(*args, **kwargs)
          File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 1097, in process_lxd_results
            _process_lxd_resources(node, data)
          File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 612, in _process_lxd_resources
            storage_devices = _update_node_physical_block_devices(
          File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 905, in _update_node_physical_block_devices
            device.save(update_fields=["name"])
          File "/usr/lib/python3/dist-packages/maasserver/models/cleansave.py", line 48, in save
            return super().save(*args, **kwargs)
          File "/usr/lib/python3/dist-packages/maasserver/models/timestampedmodel.py", line 78, in save
            return super().save(*args, **kwargs)
          File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 739, in save
            self.save_base(using=using, force_insert=force_insert,
          File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 787, in save_base
            post_save.send(
          File "/usr/lib/python3/dist-packages/django/dispatch/dispatcher.py", line 180, in send
            return [
          File "/usr/lib/python3/dist-packages/django/dispatch/dispatcher.py", line 181, in <listcomp>
            (receiver, receiver(signal=self, sender=sender, **named))
          File "/usr/lib/python3/dist-packages/maasserver/models/signals/blockdevices.py", line 32, in update_filesystem_group
            group.save()
          File "/usr/lib/python3/dist-packages/maasserver/models/filesystemgroup.py", line 775, in save
            super().save(*args, **kwargs)
          File "/usr/lib/python3/dist-packages/maasserver/models/cleansave.py", line 46, in save
            self.full_clean(exclude=exclude_clean_fields, validate_unique=False)
          File "/usr/lib/python3/dist-packages/django/db/models/base.py", line 1251, in full_clean
            raise ValidationError(errors)
        django.core.exceptions.ValidationError: {'__all__': ['RAID level 1 must have at least 2 raid devices and any number of spares.']}

This particular machine has 4 disks configured into two RAID 1 devices, then those two are configured into a RAID 0. This RAID configuration was created when deploying via MAAS, and did not raise an exception for deployment.

machine-resource output: https://pastebin.canonical.com/p/k32z4HqJx3/

Changed in maas:
status: New → Triaged
importance: Undecided → High
description: updated
Changed in maas:
milestone: none → 3.4.0
Changed in maas:
milestone: 3.4.0 → 3.5.0
Changed in maas:
milestone: 3.5.0 → 3.5.x
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.