← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~ack/maas:big-auto-field-default into maas:master

 

Alberto Donato has proposed merging ~ack/maas:big-auto-field-default into maas:master.

Commit message:
switch IDs defaults from AutoField to BigAutoField


This also adds a manual migration to ignore FKs for unmanaged Discovery model, which otherwise breaks migrations



Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~ack/maas/+git/maas/+merge/442177
-- 
Your team MAAS Maintainers is requested to review the proposed merge of ~ack/maas:big-auto-field-default into maas:master.
diff --git a/src/maasserver/djangosettings/settings.py b/src/maasserver/djangosettings/settings.py
index 1e7ccea..697d480 100644
--- a/src/maasserver/djangosettings/settings.py
+++ b/src/maasserver/djangosettings/settings.py
@@ -272,7 +272,7 @@ MIDDLEWARE = (
 
 ROOT_URLCONF = "maasserver.djangosettings.urls"
 
-DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
+DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
 
 MIGRATION_MODULES = {
     # Migrations for MAAS >=2.0.
diff --git a/src/maasserver/migrations/maasserver/0301_discovery_ignore_fks.py b/src/maasserver/migrations/maasserver/0301_discovery_ignore_fks.py
new file mode 100644
index 0000000..9437f40
--- /dev/null
+++ b/src/maasserver/migrations/maasserver/0301_discovery_ignore_fks.py
@@ -0,0 +1,21 @@
+# Generated by Django 3.2.12 on 2023-05-01 16:08
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("maasserver", "0300_current_script_set_foreign_keys_readd"),
+    ]
+
+    operations = [
+        migrations.RemoveField(model_name="discovery", name="neighbour"),
+        migrations.RemoveField(model_name="discovery", name="mdns"),
+        migrations.RemoveField(model_name="discovery", name="observer"),
+        migrations.RemoveField(
+            model_name="discovery", name="observer_interface"
+        ),
+        migrations.RemoveField(model_name="discovery", name="fabric"),
+        migrations.RemoveField(model_name="discovery", name="vlan"),
+        migrations.RemoveField(model_name="discovery", name="subnet"),
+    ]
diff --git a/src/maasserver/migrations/maasserver/0302_big_auto_field.py b/src/maasserver/migrations/maasserver/0302_big_auto_field.py
new file mode 100644
index 0000000..73ebf4f
--- /dev/null
+++ b/src/maasserver/migrations/maasserver/0302_big_auto_field.py
@@ -0,0 +1,781 @@
+# Generated by Django 3.2.12 on 2023-05-02 07:11
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("maasserver", "0301_discovery_ignore_fks"),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name="domain",
+            options={},
+        ),
+        migrations.AlterField(
+            model_name="blockdevice",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bmc",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bmcroutablerackcontrollerrelationship",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootresource",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootresourcefile",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootresourceset",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootsource",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootsourcecache",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="bootsourceselection",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="cacheset",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="config",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="dhcpsnippet",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="dnsdata",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="dnspublication",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="dnsresource",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="domain",
+            name="id",
+            field=models.AutoField(primary_key=True, serialize=False),
+        ),
+        migrations.AlterField(
+            model_name="event",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="eventtype",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="fabric",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="filestorage",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="filesystem",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="filesystemgroup",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="forwarddnsserver",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="globaldefault",
+            name="id",
+            field=models.AutoField(primary_key=True, serialize=False),
+        ),
+        migrations.AlterField(
+            model_name="interface",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="interfacerelationship",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="iprange",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="keysource",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="largefile",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="licensekey",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="mdns",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="neighbour",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="node",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodeconfig",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodedevice",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodedevicevpd",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodegrouptorackcontroller",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodekey",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodemetadata",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nodeuserdata",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="notification",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="notificationdismissal",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="numanode",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="numanodehugepages",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="ownerdata",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="packagerepository",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="partition",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="partitiontable",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="podhints",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="podstoragepool",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="rbaclastsync",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="rbacsync",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="rdns",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regioncontrollerprocess",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regioncontrollerprocessendpoint",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="regionrackrpcconnection",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="resourcepool",
+            name="id",
+            field=models.AutoField(primary_key=True, serialize=False),
+        ),
+        migrations.AlterField(
+            model_name="rootkey",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="script",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="scriptresult",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="scriptset",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="service",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="space",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="sshkey",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="sslkey",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="staticipaddress",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="staticroute",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="subnet",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="tag",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="template",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="userprofile",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="versionedtextfile",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="virtualmachine",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="virtualmachinedisk",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="virtualmachineinterface",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="vlan",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="vmcluster",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="zone",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+    ]
diff --git a/src/maasserver/migrations/piston3/0004_big_auto_field.py b/src/maasserver/migrations/piston3/0004_big_auto_field.py
new file mode 100644
index 0000000..6715ffd
--- /dev/null
+++ b/src/maasserver/migrations/piston3/0004_big_auto_field.py
@@ -0,0 +1,42 @@
+# Generated by Django 3.2.12 on 2023-05-02 07:11
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("piston3", "0003_piston_nonce_index"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="consumer",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="nonce",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+        migrations.AlterField(
+            model_name="token",
+            name="id",
+            field=models.BigAutoField(
+                auto_created=True,
+                primary_key=True,
+                serialize=False,
+                verbose_name="ID",
+            ),
+        ),
+    ]
diff --git a/src/maasserver/models/domain.py b/src/maasserver/models/domain.py
index a793e01..5dccc9f 100644
--- a/src/maasserver/models/domain.py
+++ b/src/maasserver/models/domain.py
@@ -18,7 +18,13 @@ import re
 
 from django.core.exceptions import PermissionDenied, ValidationError
 from django.core.validators import RegexValidator
-from django.db.models import BooleanField, Manager, PositiveIntegerField, Q
+from django.db.models import (
+    AutoField,
+    BooleanField,
+    Manager,
+    PositiveIntegerField,
+    Q,
+)
 from django.db.models.query import QuerySet
 from netaddr import IPAddress
 
@@ -172,12 +178,11 @@ class Domain(CleanSave, TimestampedModel):
     :ivar objects: An instance of the class :class:`DomainManager`.
     """
 
-    class Meta:
-        verbose_name = "Domain"
-        verbose_name_plural = "Domains"
-
     objects = DomainManager()
 
+    # explicitly define the AutoField since default is BigAutoField which
+    # doesn't allow 0 as a value (used for the default domain)
+    id = AutoField(primary_key=True)
     name = DomainNameField(
         max_length=256,
         editable=True,
diff --git a/src/maasserver/models/globaldefault.py b/src/maasserver/models/globaldefault.py
index e84a501..8bf5991 100644
--- a/src/maasserver/models/globaldefault.py
+++ b/src/maasserver/models/globaldefault.py
@@ -6,7 +6,7 @@
 
 from datetime import datetime
 
-from django.db.models import ForeignKey, Manager, PROTECT
+from django.db.models import AutoField, ForeignKey, Manager, PROTECT
 
 from maasserver.enum import ALLOCATED_NODE_STATUSES, NODE_STATUS
 from maasserver.models.cleansave import CleanSave
@@ -37,6 +37,10 @@ class GlobalDefault(CleanSave, TimestampedModel):
 
     objects = GlobalDefaultManager()
 
+    # explicitly define the AutoField since default is BigAutoField which
+    # doesn't allow 0 as a value
+    id = AutoField(primary_key=True)
+
     domain = ForeignKey(
         Domain, null=False, blank=False, editable=True, on_delete=PROTECT
     )
diff --git a/src/maasserver/models/resourcepool.py b/src/maasserver/models/resourcepool.py
index c6bc314..fed6f34 100644
--- a/src/maasserver/models/resourcepool.py
+++ b/src/maasserver/models/resourcepool.py
@@ -12,7 +12,7 @@ __all__ = [
 from datetime import datetime
 
 from django.core.exceptions import PermissionDenied, ValidationError
-from django.db.models import CharField, Manager, TextField
+from django.db.models import AutoField, CharField, Manager, TextField
 
 from maasserver.fields import MODEL_NAME_VALIDATOR
 from maasserver.models.cleansave import CleanSave
@@ -108,6 +108,9 @@ class ResourcePool(CleanSave, TimestampedModel):
 
     objects = ResourcePoolManager()
 
+    # explicitly define the AutoField since default is BigAutoField which
+    # doesn't allow 0 as a value (used for the default resource pool)
+    id = AutoField(primary_key=True)
     name = CharField(
         max_length=256,
         unique=True,
diff --git a/src/maasserver/models/rootkey.py b/src/maasserver/models/rootkey.py
index a4238ee..96122a6 100644
--- a/src/maasserver/models/rootkey.py
+++ b/src/maasserver/models/rootkey.py
@@ -4,7 +4,7 @@
 """RootKey model."""
 
 
-from django.db.models import BigAutoField, DateTimeField
+from django.db.models import DateTimeField
 
 from maasserver.models.timestampedmodel import TimestampedModel
 
@@ -12,5 +12,4 @@ from maasserver.models.timestampedmodel import TimestampedModel
 class RootKey(TimestampedModel):
     """A root key for signing macaroons."""
 
-    id = BigAutoField(primary_key=True, verbose_name="ID")
     expiration = DateTimeField()

Follow ups