diff options
author | Rob Austein <sra@hactrn.net> | 2008-04-12 06:39:34 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2008-04-12 06:39:34 +0000 |
commit | a3ed48964537a25d6b199ef4ec252fb1aba093bb (patch) | |
tree | 3b29b808020cf4f2aaa3c244c17a45f7b75438f2 /rpkid | |
parent | 9c9991894debd129ed3116382599424ebf3a782a (diff) |
Checkpoint. "make test" works again, but ROA maintenance code isn't
really right yet.
svn path=/rpkid/rpki/left_right.py; revision=1658
Diffstat (limited to 'rpkid')
-rw-r--r-- | rpkid/rpki/left_right.py | 19 | ||||
-rw-r--r-- | rpkid/rpki/sql.py | 6 |
2 files changed, 20 insertions, 5 deletions
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py index 17f92ddd..1e8ac1e0 100644 --- a/rpkid/rpki/left_right.py +++ b/rpkid/rpki/left_right.py @@ -947,12 +947,29 @@ class route_origin_elt(data_elt): self.sql_store() repository = parent.repository() - repository.publish(self.roa, self.roa_uri(ca)) repository.publish(self.cert, self.ee_uri(ca)) + ca_detail.generate_manifest() + + def withdraw_roa(self): + """Withdraw ROA associated with this route_origin.""" + ca_detail = self.ca_detail() + ca = ca_detail.ca() + repository = ca.parent().repository() + repository.publish(self.roa, self.roa_uri(ca)) + repository.publish(self.cert, self.ee_uri(ca)) ca_detail.generate_manifest() + def reissue_roa(self): + """Reissue ROA associated with this route_origin.""" + rpki.log.debug("route_origin.ca_detail %s" % repr(self.ca_detail())) + self.withdraw_roa() + rpki.log.debug("route_origin.ca_detail %s" % repr(self.ca_detail())) + if self.ca_detail().state != 'active': + self.ca_detail_id = None + self.generate_roa() + def roa_uri(self, ca, key = None): """Return the publication URI for this route_origin's ROA.""" return ca.sia_uri + (key or self.cert).gSKI() + ".roa" diff --git a/rpkid/rpki/sql.py b/rpkid/rpki/sql.py index f9f58e4f..3a9d552d 100644 --- a/rpkid/rpki/sql.py +++ b/rpkid/rpki/sql.py @@ -449,8 +449,7 @@ class ca_detail_obj(sql_persistant): for child_cert in predecessor.child_certs(): child_cert.reissue(self) for route_origin in predecessor.route_origins(): - if route_origin.roa: - raise rpki.exceptions.NotImplementedYet, "Don't (yet) know how to reissue ROAs" + route_origin.reissue_roa() def delete(self, ca, repository): """Delete this ca_detail and all of the certs it issued.""" @@ -461,8 +460,7 @@ class ca_detail_obj(sql_persistant): for revoked__cert in self.revoked_certs(): revoked_cert.sql_delete() for route_origin in self.route_origins(): - if route_origin.roa: - raise rpki.exceptions.NotImplementedYet, "Don't (yet) know how to withdraw ROAs" + route_origin.withdraw_roa() repository.withdraw(self.latest_manifest, self.manifest_uri(ca)) repository.withdraw(self.latest_crl, self.crl_uri()) self.sql_delete() |