aboutsummaryrefslogtreecommitdiff
path: root/rpki/gui/cacheview/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpki/gui/cacheview/util.py')
-rw-r--r--rpki/gui/cacheview/util.py27
1 files changed, 16 insertions, 11 deletions
diff --git a/rpki/gui/cacheview/util.py b/rpki/gui/cacheview/util.py
index 9e8748bf..21430091 100644
--- a/rpki/gui/cacheview/util.py
+++ b/rpki/gui/cacheview/util.py
@@ -32,6 +32,7 @@ from django.db import transaction
import django.db.models
import rpki
+import rpki.left_right
import rpki.gui.app.timestamp
from rpki.gui.app.models import Conf, Alert
from rpki.gui.cacheview import models
@@ -39,6 +40,8 @@ from rpki.rcynic import rcynic_xml_iterator, label_iterator
from rpki.sundial import datetime
from rpki.irdb.zookeeper import Zookeeper
+from lxml.etree import Element, SubElement
+
logger = logging.getLogger(__name__)
@@ -310,23 +313,26 @@ def fetch_published_objects():
"""Query rpkid for all objects published by local users, and look up the
current validation status of each object. The validation status is used
later to send alerts for objects which have transitioned to invalid.
-
"""
+
logger.info('querying for published objects')
handles = [conf.handle for conf in Conf.objects.all()]
- req = [rpki.left_right.list_published_objects_elt.make_pdu(action='list', self_handle=h, tag=h) for h in handles]
+ q_msg = Element(rpki.left_right.tag_msg, nsmap = rpki.left_right.nsmap,
+ type = "query", version = rpki.left_right.version)
+ for h in handles:
+ SubElement(q_msg, rpki.left_right.tag_list_published_objects, action="list", self_handle=h, tag=h)
z = Zookeeper()
- pdus = z.call_rpkid(*req)
- for pdu in pdus:
- if isinstance(pdu, rpki.left_right.list_published_objects_elt):
+ r_msg = z.call_rpkid(q_msg)
+ for r_pdu in r_msg:
+ if r_pdu.tag == rpki.left_right.tag_list_published_objects:
# Look up the object in the rcynic cache
- qs = models.RepositoryObject.objects.filter(uri=pdu.uri)
+ qs = models.RepositoryObject.objects.filter(uri=r_pdu.get("uri"))
if qs:
# get the current validity state
valid = qs[0].statuses.filter(status=object_accepted).exists()
- uris[pdu.uri] = (pdu.self_handle, valid, False, None)
- logger.debug('adding ' + pdu.uri)
+ uris[r_pdu.get("uri")] = (r_pdu.get("self_handle"), valid, False, None)
+ logger.debug('adding %s', r_pdu.get("uri"))
else:
# this object is not in the cache. it was either published
# recently, or disappared previously. if it disappeared
@@ -334,8 +340,8 @@ def fetch_published_objects():
# omit the uri from the list since we are interested only in
# objects which were valid and are no longer valid
pass
- elif isinstance(pdu, rpki.left_right.report_error_elt):
- logging.error('rpkid reported an error: %s', pdu.error_code)
+ elif r_pdu.tag == rpki.left_right.tag_report_error:
+ logging.error('rpkid reported an error: %s', r_pdu.get("error_code"))
class Handle(object):
@@ -353,7 +359,6 @@ class Handle(object):
def notify_invalid():
"""Send email alerts to the addresses registered in ghostbuster records for
any invalid objects that were published by users of this system.
-
"""
logger.info('sending notifications for invalid objects')