Split up poll_order_and_request_issuance.

This commit is contained in:
Jacob Hoffman-Andrews 2018-02-13 17:25:25 -08:00
parent 2a430bb7a5
commit 77f7cf2c2e
2 changed files with 19 additions and 9 deletions

View file

@ -597,10 +597,15 @@ class ClientV2(ClientBase):
authorizations=authorizations,
csr_pem=csr_pem)
def poll_order_and_request_issuance(self, orderr, max_time=datetime.timedelta(seconds=90)):
def poll_and_finalize(self, orderr, deadline=None):
if deadline is None:
deadline = datetime.datetime.now() + datetime.timedelta(seconds=90)
orderr = self.poll_authorizations(orderr, deadline)
return self.finalize_order(orderr, deadline)
def poll_authorizations(self, orderr, deadline):
"""Poll Order Resource for status."""
responses = []
deadline = datetime.datetime.now() + max_time
for url in orderr.body.authorizations:
while datetime.datetime.now() < deadline:
time.sleep(1)
@ -615,8 +620,9 @@ class ClientV2(ClientBase):
raise Exception("failed challenge for %s: %s" %
(authzr.body.identifier.value, chall.error))
raise Exception("failed authorization: %s" % authzr.body)
latest = self._order_resource_from_response(self.net.get(orderr.uri), uri=orderr.uri)
return self._order_resource_from_response(self.net.get(orderr.uri), uri=orderr.uri)
def finalize_order(self, orderr, deadline):
csr = OpenSSL.crypto.load_certificate_request(
OpenSSL.crypto.FILETYPE_PEM, orderr.csr_pem)
wrapped_csr = messages.CertificateRequest(csr=jose.ComparableX509(csr))

View file

@ -490,13 +490,13 @@ class Order(ResourceBody):
"""Order Resource Body.
:ivar buffer csr: CSR in pem format.
:ivar string status:
:ivar list of string authorizations:
:ivar datetime.datetime expires:
:ivar acme.messages.Status status:
:ivar list of string authorizations: URLs of authorizations.
:ivar datetime.datetime expires: When the order expires.
"""
identifiers = jose.Field('identifiers', omitempty=True)
status = jose.Field('status', omitempty=True, default=None)
status = jose.Field('status', decoder=Status.from_json,
omitempty=True, default=STATUS_PENDING)
authorizations = jose.Field('authorizations', omitempty=True)
certificate = jose.Field('certificate', omitempty=True)
finalize = jose.Field('finalize', omitempty=True)
@ -506,7 +506,11 @@ class OrderResource(ResourceWithURI):
"""Order Resource.
:ivar acme.messages.Order body:
:ivar list of acme.messages.AuthorizationResource authorizations:
Fully-fetched AuthorizationResource objects.
:ivar string csr_pem: The CSR this Order will be finalized with.
:ivar string fullchain_pem: The fetched contents of the certificate URL
produced once the order was finalized, if it's present.
"""
body = jose.Field('body', decoder=Order.from_json)
csr_pem = jose.Field('csr_pem', omitempty=True)