aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpki/irdb/migrations/0001_initial.py81
-rw-r--r--rpki/irdb/migrations/0002_root.py29
-rw-r--r--rpki/irdb/migrations/0003_remove_rootd.py25
-rw-r--r--rpki/irdb/models.py8
-rw-r--r--rpki/irdb/zookeeper.py14
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