aboutsummaryrefslogtreecommitdiff
path: root/rpkid
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid')
-rw-r--r--rpkid/rpki/gui/app/views.py3
-rw-r--r--rpkid/rpki/irdb/zookeeper.py12
2 files changed, 15 insertions, 0 deletions
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index 6c4d1719..faff0b87 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -507,6 +507,7 @@ def roa_create_confirm(request):
roa.prefixes.create(version=v, prefix=str(rng.min),
prefixlen=rng.prefixlen(),
max_prefixlen=max_prefixlen)
+ Zookeeper(handle=conf.handle).run_rpkid_now()
return http.HttpResponseRedirect(reverse(roa_list))
else:
return http.HttpResponseRedirect(reverse(roa_create))
@@ -558,6 +559,7 @@ def roa_delete(request, pk):
# if this was the last prefix on the ROA, delete the ROA request
if not roa.prefixes.exists():
roa.delete()
+ Zookeeper(handle=conf.handle).run_rpkid_now()
return http.HttpResponseRedirect(reverse(roa_list))
### Process GET ###
@@ -640,6 +642,7 @@ def _ghostbuster_edit(request, obj=None):
obj.issuer = conf
obj.vcard = glue.ghostbuster_to_vcard(obj)
obj.save()
+ Zookeeper(handle=conf.handle).run_rpkid_now()
return http.HttpResponseRedirect(obj.get_absolute_url())
else:
form = form_class(conf, instance=obj)
diff --git a/rpkid/rpki/irdb/zookeeper.py b/rpkid/rpki/irdb/zookeeper.py
index 4816b40e..bc255186 100644
--- a/rpkid/rpki/irdb/zookeeper.py
+++ b/rpkid/rpki/irdb/zookeeper.py
@@ -885,6 +885,18 @@ class Zookeeper(object):
return call_rpkid(*pdus)
+ def run_rpkid_now(self):
+ """Poke rpkid to immediately run the cron job for the current handle.
+
+ This method is used by the gui when a user has changed something in the
+ IRDB (ghostbuster, roa) which does not require a full `synchronize()` call,
+ to force the object to be immediately issued.
+
+ """
+ self.call_rpkid(rpki.left_right.self_elt.make_pdu(
+ action = "set", self_handle = self.handle, run_now = "yes"))
+
+
def call_pubd(self, *pdus):
"""
Issue a call to pubd, return result.