Comment 0 for bug 1990299

Revision history for this message
Christian Grabowski (cgrabowski) wrote :

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.

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