aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/irdb/zookeeper.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki/irdb/zookeeper.py')
-rw-r--r--rpkid/rpki/irdb/zookeeper.py56
1 files changed, 39 insertions, 17 deletions
diff --git a/rpkid/rpki/irdb/zookeeper.py b/rpkid/rpki/irdb/zookeeper.py
index d172e18e..17f057de 100644
--- a/rpkid/rpki/irdb/zookeeper.py
+++ b/rpkid/rpki/irdb/zookeeper.py
@@ -594,6 +594,18 @@ class Zookeeper(object):
@django.db.transaction.commit_on_success
+ def delete_rootd(self):
+ """
+ Delete rootd associated with this RPKI entity.
+ """
+
+ try:
+ self.resource_ca.rootd.delete()
+ except rpki.irdb.Rootd.DoesNotExist:
+ self.log("No associated rootd")
+
+
+ @django.db.transaction.commit_on_success
def configure_publication_client(self, filename, sia_base = None):
"""
Configure publication server to know about a new client, given the
@@ -774,7 +786,7 @@ class Zookeeper(object):
@django.db.transaction.commit_on_success
- def load_prefixes(self, filename):
+ def load_prefixes(self, filename, ignore_missing_children = False):
"""
Whack IRDB to match prefixes.csv.
"""
@@ -793,14 +805,19 @@ class Zookeeper(object):
for version, grouped, rset in ((4, grouped4, rpki.resource_set.resource_set_ipv4),
(6, grouped6, rpki.resource_set.resource_set_ipv6)):
for handle, prefixes in grouped.iteritems():
- child = self.resource_ca.children.get(handle = handle)
- for prefix in rset(",".join(prefixes)):
- obj, created = rpki.irdb.ChildNet.objects.get_or_create(
- child = child,
- start_ip = str(prefix.min),
- end_ip = str(prefix.max),
- version = version)
- primary_keys.append(obj.pk)
+ try:
+ child = self.resource_ca.children.get(handle = handle)
+ except rpki.irdb.Child.DoesNotExist:
+ if not ignore_missing_children:
+ raise
+ else:
+ for prefix in rset(",".join(prefixes)):
+ obj, created = rpki.irdb.ChildNet.objects.get_or_create(
+ child = child,
+ start_ip = str(prefix.min),
+ end_ip = str(prefix.max),
+ version = version)
+ primary_keys.append(obj.pk)
q = rpki.irdb.ChildNet.objects
q = q.filter(child__issuer__exact = self.resource_ca)
@@ -809,7 +826,7 @@ class Zookeeper(object):
@django.db.transaction.commit_on_success
- def load_asns(self, filename):
+ def load_asns(self, filename, ignore_missing_children = False):
"""
Whack IRDB to match asns.csv.
"""
@@ -824,13 +841,18 @@ class Zookeeper(object):
primary_keys = []
for handle, asns in grouped.iteritems():
- child = self.resource_ca.children.get(handle = handle)
- for asn in rpki.resource_set.resource_set_as(",".join(asns)):
- obj, created = rpki.irdb.ChildASN.objects.get_or_create(
- child = child,
- start_as = str(asn.min),
- end_as = str(asn.max))
- primary_keys.append(obj.pk)
+ try:
+ child = self.resource_ca.children.get(handle = handle)
+ except rpki.irdb.Child.DoesNotExist:
+ if not ignore_missing_children:
+ raise
+ else:
+ for asn in rpki.resource_set.resource_set_as(",".join(asns)):
+ obj, created = rpki.irdb.ChildASN.objects.get_or_create(
+ child = child,
+ start_as = str(asn.min),
+ end_as = str(asn.max))
+ primary_keys.append(obj.pk)
q = rpki.irdb.ChildASN.objects
q = q.filter(child__issuer__exact = self.resource_ca)