diff options
author | Michael Elkins <melkins@tislabs.com> | 2013-02-28 00:07:35 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2013-02-28 00:07:35 +0000 |
commit | 6dd2299b724a20dcfb0aec86e7745464eb7e9300 (patch) | |
tree | b4be3f7fba64259fe523ff9cee875f13d825bd9d /rpkid/portal-gui/scripts/rpkigui-flatten-roas.py | |
parent | 958fd4069679fd74dc80a9eeb4c5b3be953090ac (diff) |
add new script rpkigui-flatten-roas script to take care of flattening old roas which had multiple prefixes
see #421
svn path=/trunk/; revision=5086
Diffstat (limited to 'rpkid/portal-gui/scripts/rpkigui-flatten-roas.py')
-rw-r--r-- | rpkid/portal-gui/scripts/rpkigui-flatten-roas.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py b/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py new file mode 100644 index 00000000..e94484cf --- /dev/null +++ b/rpkid/portal-gui/scripts/rpkigui-flatten-roas.py @@ -0,0 +1,34 @@ +from django.db import transaction +from django.db.models import Count +from rpki.gui.app.models import ROARequest +from rpki.irdb.zookeeper import Zookeeper + +handles = set() + + +@transaction.commit_on_success +def flatten(): + for roa in ROARequest.objects.annotate(num_prefixes=Count('prefixes')).filter(num_prefixes__gt=1): + print 'splitting roa for AS%d' % roa.asn + for pfx in roa.prefixes.all(): + # create new roa objects for each prefix + newroa = ROARequest.objects.create( + issuer=roa.issuer, + asn=roa.asn) + newroa.prefixes.create( + version=pfx.version, + prefix=pfx.prefix, + prefixlen=pfx.prefixlen, + max_prefixlen=pfx.max_prefixlen + ) + roa.delete() + handles.add(roa.issuer.handle) + +flatten() + +if handles: + # poke rpkid to run the cron job for each handle that had a roa change + z = Zookeeper() + for h in handles: + z.reset_identity(h) + z.run_rpkid_now() |