diff options
Diffstat (limited to 'rpki/irdb')
-rw-r--r-- | rpki/irdb/migrations/0001_initial.py | 81 | ||||
-rw-r--r-- | rpki/irdb/migrations/0002_root.py | 29 | ||||
-rw-r--r-- | rpki/irdb/migrations/0003_remove_rootd.py | 25 | ||||
-rw-r--r-- | rpki/irdb/models.py | 8 | ||||
-rw-r--r-- | rpki/irdb/zookeeper.py | 14 |
5 files changed, 44 insertions, 113 deletions
diff --git a/rpki/irdb/migrations/0001_initial.py b/rpki/irdb/migrations/0001_initial.py index 019328b3..f2d34d8b 100644 --- a/rpki/irdb/migrations/0001_initial.py +++ b/rpki/irdb/migrations/0001_initial.py @@ -110,6 +110,24 @@ class Migration(migrations.Migration): ], ), migrations.CreateModel( + name='Parent', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('certificate', rpki.fields.CertificateField()), + ('handle', rpki.irdb.models.HandleField(max_length=120)), + ('ta', rpki.fields.CertificateField()), + ('service_uri', models.CharField(max_length=255)), + ('parent_handle', rpki.irdb.models.HandleField(max_length=120)), + ('child_handle', rpki.irdb.models.HandleField(max_length=120)), + ('repository_type', rpki.fields.EnumField(choices=[(1, b'none'), (2, b'offer'), (3, b'referral')])), + ('referrer', rpki.irdb.models.HandleField(max_length=120, null=True, blank=True)), + ('referral_authorization', rpki.irdb.models.SignedReferralField(null=True)), + ('asn_resources', models.TextField(blank=True)), + ('ipv4_resources', models.TextField(blank=True)), + ('ipv6_resources', models.TextField(blank=True)), + ], + ), + migrations.CreateModel( name='Referral', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), @@ -221,42 +239,6 @@ class Migration(migrations.Migration): 'abstract': False, }, ), - migrations.CreateModel( - name='Turtle', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('service_uri', models.CharField(max_length=255)), - ], - ), - migrations.CreateModel( - name='Parent', - fields=[ - ('turtle_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='irdb.Turtle')), - ('certificate', rpki.fields.CertificateField()), - ('handle', rpki.irdb.models.HandleField(max_length=120)), - ('ta', rpki.fields.CertificateField()), - ('parent_handle', rpki.irdb.models.HandleField(max_length=120)), - ('child_handle', rpki.irdb.models.HandleField(max_length=120)), - ('repository_type', rpki.fields.EnumField(choices=[(1, b'none'), (2, b'offer'), (3, b'referral')])), - ('referrer', rpki.irdb.models.HandleField(max_length=120, null=True, blank=True)), - ('referral_authorization', rpki.irdb.models.SignedReferralField(null=True)), - ('issuer', models.ForeignKey(related_name='parents', to='irdb.ResourceHolderCA')), - ], - bases=('irdb.turtle', models.Model), - ), - migrations.CreateModel( - name='Rootd', - fields=[ - ('turtle_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='irdb.Turtle')), - ('certificate', rpki.fields.CertificateField()), - ('private_key', rpki.fields.RSAPrivateKeyField()), - ('issuer', models.OneToOneField(related_name='rootd', to='irdb.ResourceHolderCA')), - ], - options={ - 'abstract': False, - }, - bases=('irdb.turtle', models.Model), - ), migrations.AddField( model_name='repository', name='issuer', @@ -264,8 +246,8 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='repository', - name='turtle', - field=models.OneToOneField(related_name='repository', to='irdb.Turtle'), + name='parent', + field=models.OneToOneField(related_name='repository', to='irdb.Parent'), ), migrations.AddField( model_name='referral', @@ -273,6 +255,11 @@ class Migration(migrations.Migration): field=models.OneToOneField(related_name='referral_certificate', to='irdb.ResourceHolderCA'), ), migrations.AddField( + model_name='parent', + name='issuer', + field=models.ForeignKey(related_name='parents', to='irdb.ResourceHolderCA'), + ), + migrations.AddField( model_name='hostedca', name='hosted', field=models.OneToOneField(related_name='hosted_by', to='irdb.ResourceHolderCA'), @@ -288,6 +275,11 @@ class Migration(migrations.Migration): field=models.ForeignKey(related_name='ghostbuster_requests', to='irdb.ResourceHolderCA'), ), migrations.AddField( + model_name='ghostbusterrequest', + name='parent', + field=models.ForeignKey(related_name='ghostbuster_requests', to='irdb.Parent', null=True), + ), + migrations.AddField( model_name='eecertificaterequest', name='issuer', field=models.ForeignKey(related_name='ee_certificate_requests', to='irdb.ResourceHolderCA'), @@ -328,14 +320,13 @@ class Migration(migrations.Migration): unique_together=set([('issuer', 'handle')]), ), migrations.AlterUniqueTogether( + name='parent', + unique_together=set([('issuer', 'handle')]), + ), + migrations.AlterUniqueTogether( name='hostedca', unique_together=set([('issuer', 'hosted')]), ), - migrations.AddField( - model_name='ghostbusterrequest', - name='parent', - field=models.ForeignKey(related_name='ghostbuster_requests', to='irdb.Parent', null=True), - ), migrations.AlterUniqueTogether( name='eecertificaterequestnet', unique_together=set([('ee_certificate_request', 'start_ip', 'end_ip', 'version')]), @@ -368,8 +359,4 @@ class Migration(migrations.Migration): name='bsc', unique_together=set([('issuer', 'handle')]), ), - migrations.AlterUniqueTogether( - name='parent', - unique_together=set([('issuer', 'handle')]), - ), ] diff --git a/rpki/irdb/migrations/0002_root.py b/rpki/irdb/migrations/0002_root.py deleted file mode 100644 index 6bdc060e..00000000 --- a/rpki/irdb/migrations/0002_root.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('irdb', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='parent', - name='asn_resources', - field=models.TextField(blank=True), - ), - migrations.AddField( - model_name='parent', - name='ipv4_resources', - field=models.TextField(blank=True), - ), - migrations.AddField( - model_name='parent', - name='ipv6_resources', - field=models.TextField(blank=True), - ), - ] diff --git a/rpki/irdb/migrations/0003_remove_rootd.py b/rpki/irdb/migrations/0003_remove_rootd.py deleted file mode 100644 index aef4c5ab..00000000 --- a/rpki/irdb/migrations/0003_remove_rootd.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('irdb', '0002_root'), - ] - - operations = [ - migrations.RemoveField( - model_name='rootd', - name='issuer', - ), - migrations.RemoveField( - model_name='rootd', - name='turtle_ptr', - ), - migrations.DeleteModel( - name='Rootd', - ), - ] diff --git a/rpki/irdb/models.py b/rpki/irdb/models.py index e2373d1f..55e3012f 100644 --- a/rpki/irdb/models.py +++ b/rpki/irdb/models.py @@ -342,9 +342,6 @@ class Referral(EECertificate): def subject_name(self): return rpki.x509.X501DN.from_cn("%s BPKI Referral EE" % self.issuer.handle) -class Turtle(django.db.models.Model): - service_uri = django.db.models.CharField(max_length = 255) - class BSC(Certificate): issuer = django.db.models.ForeignKey(ResourceHolderCA, related_name = "bscs") handle = HandleField() @@ -437,8 +434,9 @@ class ChildNet(ResourceSetNet): class Meta: unique_together = ("child", "start_ip", "end_ip", "version") -class Parent(CrossCertification, Turtle): +class Parent(CrossCertification): issuer = django.db.models.ForeignKey(ResourceHolderCA, related_name = "parents") + service_uri = django.db.models.CharField(max_length = 255) parent_handle = HandleField() child_handle = HandleField() repository_type = EnumField(choices = ("none", "offer", "referral")) @@ -539,7 +537,7 @@ class Repository(CrossCertification): service_uri = django.db.models.CharField(max_length = 255) sia_base = django.db.models.TextField() rrdp_notification_uri = django.db.models.TextField(null = True) - turtle = django.db.models.OneToOneField(Turtle, related_name = "repository") + parent = django.db.models.OneToOneField(Parent, related_name = "repository") # This shouldn't be necessary class Meta: diff --git a/rpki/irdb/zookeeper.py b/rpki/irdb/zookeeper.py index 2f00200e..a30ef7a8 100644 --- a/rpki/irdb/zookeeper.py +++ b/rpki/irdb/zookeeper.py @@ -863,24 +863,24 @@ class Zookeeper(object): if parent_handle is not None: self.log("Explicit parent_handle given") try: - turtle = self.resource_ca.parents.get(handle = parent_handle) + parent = self.resource_ca.parents.get(handle = parent_handle) except rpki.irdb.models.Parent.DoesNotExist: self.log("Could not find parent %r in our database" % parent_handle) raise CouldntFindRepoParent else: # In theory this could be rewritten using an .exists() filter. - turtles = [] + parents = [] for parent in self.resource_ca.parents.all(): try: _ = parent.repository # pylint: disable=W0612 except rpki.irdb.models.Repository.DoesNotExist: - turtles.append(parent) - if len(turtles) != 1: + parents.append(parent) + if len(parents) != 1: self.log("No explicit parent_handle given and unable to guess") raise CouldntFindRepoParent - turtle = turtles[0] - parent_handle = turtle.handle + parent = parents[0] + parent_handle = parent.handle self.log("No explicit parent_handle given, guessing parent {}".format(parent_handle)) rpki.irdb.models.Repository.objects.get_or_certify( @@ -891,7 +891,7 @@ class Zookeeper(object): sia_base = x.get("sia_base"), rrdp_notification_uri = x.get("rrdp_notification_uri"), ta = rpki.x509.X509(Base64 = x.findtext(tag_oob_repository_bpki_ta)), - turtle = turtle) + parent = parent) @django.db.transaction.atomic |