aboutsummaryrefslogtreecommitdiff
path: root/rpki/rpkid.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpki/rpkid.py')
-rw-r--r--rpki/rpkid.py38
1 files changed, 24 insertions, 14 deletions
diff --git a/rpki/rpkid.py b/rpki/rpkid.py
index a338f7e6..8a672403 100644
--- a/rpki/rpkid.py
+++ b/rpki/rpkid.py
@@ -42,8 +42,11 @@ import rpki.async
import rpki.daemonize
import rpki.rpkid_tasks
+from lxml.etree import Element, SubElement
+
logger = logging.getLogger(__name__)
+
class main(object):
"""
Main program for rpkid.
@@ -1282,7 +1285,7 @@ class ca_detail_obj(rpki.sql.sql_persistent):
Check result of CRL publication.
"""
- pdu.raise_if_error()
+ rpki.publication.raise_if_error(pdu)
self.crl_published = None
self.sql_mark_dirty()
@@ -1342,7 +1345,7 @@ class ca_detail_obj(rpki.sql.sql_persistent):
Check result of manifest publication.
"""
- pdu.raise_if_error()
+ rpki.publication.raise_if_error(pdu)
self.manifest_published = None
self.sql_mark_dirty()
@@ -1676,7 +1679,7 @@ class child_cert_obj(rpki.sql.sql_persistent):
Publication callback: check result and mark published.
"""
- pdu.raise_if_error()
+ rpki.publication.raise_if_error(pdu)
self.published = None
self.sql_mark_dirty()
@@ -1965,7 +1968,8 @@ class roa_obj(rpki.sql.sql_persistent):
"""
Check publication result.
"""
- pdu.raise_if_error()
+
+ rpki.publication.raise_if_error(pdu)
self.published = None
self.sql_mark_dirty()
@@ -2174,7 +2178,7 @@ class ghostbuster_obj(rpki.sql.sql_persistent):
Check publication result.
"""
- pdu.raise_if_error()
+ rpki.publication.raise_if_error(pdu)
self.published = None
self.sql_mark_dirty()
@@ -2496,7 +2500,7 @@ class ee_cert_obj(rpki.sql.sql_persistent):
Publication callback: check result and mark published.
"""
- pdu.raise_if_error()
+ rpki.publication.raise_if_error(pdu)
self.published = None
self.sql_mark_dirty()
@@ -2532,31 +2536,37 @@ class publication_queue(object):
logger.debug("Queuing publication action: uri %s, old %r, new %r", uri, old_obj, new_obj)
+ # id(repository) may need to change to repository.peer_contact_uri
+ # once we convert from our custom SQL cache to Django ORM.
+
rid = id(repository)
if rid not in self.repositories:
self.repositories[rid] = repository
- self.msgs[rid] = rpki.publication.msg.query()
+ self.msgs[rid] = Element(rpki.publication.tag_msg, nsmap = rpki.publication.nsmap,
+ type = "query", version = rpki.publication.version)
if self.replace and uri in self.uris:
logger.debug("Removing publication duplicate %r", self.uris[uri])
old_pdu = self.uris.pop(uri)
self.msgs[rid].remove(old_pdu)
- hash = old_pdu.hash
+ hash = old_pdu.get("hash")
elif old_obj is None:
hash = None
else:
hash = rpki.x509.sha256(old_obj.get_DER()).encode("hex")
if new_obj is None:
- pdu = rpki.publication.withdraw_elt.make_pdu(uri = uri, hash = hash)
+ pdu = SubElement(self.msgs[rid], rpki.publication.tag_withdraw, uri = uri, hash = hash)
else:
- pdu = rpki.publication.publish_elt.make_pdu( uri = uri, hash = hash, der = new_obj.get_DER())
+ pdu = SubElement(self.msgs[rid], rpki.publication.tag_publish, uri = uri)
+ pdu.text = new_obj.get_Base64()
+ if hash is not None:
+ pdu.set("hash", hash)
if handler is not None:
- self.handlers[id(pdu)] = handler
- pdu.tag = id(pdu)
-
- self.msgs[rid].append(pdu)
+ tag = str(id(pdu))
+ self.handlers[tag] = handler
+ pdu.set("tag", tag)
if self.replace:
self.uris[uri] = pdu