diff options
Diffstat (limited to 'rpki/publication.py')
-rw-r--r-- | rpki/publication.py | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/rpki/publication.py b/rpki/publication.py index 7b5abaf9..ec088a46 100644 --- a/rpki/publication.py +++ b/rpki/publication.py @@ -39,7 +39,6 @@ logger = logging.getLogger(__name__) class publication_namespace(object): - xmlns = "http://www.hactrn.net/uris/rpki/publication-spec/" nsmap = { None : xmlns } @@ -103,6 +102,9 @@ class base_publication_elt(rpki.xml_utils.base_elt, publication_namespace): class publish_elt(base_publication_elt): + """ + <publish/> element. + """ element_name = "publish" @@ -132,7 +134,7 @@ class publish_elt(base_publication_elt): """ logger.info("Publishing %s", self.payload.tracking_data(self.uri)) - snapshot.publish(self.client, self.payload, self.uri) + snapshot.publish(self.client, self.payload, self.uri, self.hash) filename = self.uri_to_filename() filename_tmp = filename + ".tmp" dirname = os.path.dirname(filename) @@ -144,6 +146,9 @@ class publish_elt(base_publication_elt): class withdraw_elt(base_publication_elt): + """ + <withdraw/> element. + """ element_name = "withdraw" @@ -153,7 +158,7 @@ class withdraw_elt(base_publication_elt): """ logger.info("Withdrawing %s", self.uri) - snapshot.withdraw(self.client, self.uri) + snapshot.withdraw(self.client, self.uri, self.hash) filename = self.uri_to_filename() try: os.remove(filename) @@ -173,6 +178,24 @@ class withdraw_elt(base_publication_elt): dirname = os.path.dirname(dirname) +class list_elt(base_publication_elt): + """ + <list/> element. + """ + + def serve_dispatch(self, r_msg, snapshot, cb, eb): + """ + Action dispatch handler. + """ + + for obj in self.client.published_objects: + r_pdu = self.__class__() + r_pdu.tag = self.tag + r_pdu.uri = obj.uri + r_pdu.hash = obj.hash + r_msg.append(r_pdu) + + class report_error_elt(rpki.xml_utils.text_elt, publication_namespace): """ <report_error/> element. |