def certificate_reissue()

in lemur/common/celery.py [0:0]


def certificate_reissue():
    """
    This celery task reissues certificates which are pending reissue
    :return:
    """
    function = f"{__name__}.{sys._getframe().f_code.co_name}"
    task_id = None
    if celery.current_task:
        task_id = celery.current_task.request.id

    log_data = {
        "function": function,
        "message": "reissuing certificates",
        "task_id": task_id,
    }

    if task_id and is_task_active(function, task_id, None):
        log_data["message"] = "Skipping task: Task is already active"
        current_app.logger.debug(log_data)
        return

    current_app.logger.debug(log_data)

    # set the lemur identity
    identity_changed.send(current_app._get_current_object(), identity=Identity(1))

    for certificate in certificate_service.get_all_pending_reissue():
        log_data["message"] = f"{certificate.name} is eligible for re-issuance"
        current_app.logger.info(log_data)

        details = certificate_service.get_certificate_primitives(certificate)
        details, errors = CertificateOutputSchema().dump(details)
        current_app.logger.info(
            "Re-issuing certificate",
            extra=dict(
                certificate={
                    "common_name": details["commonName"],
                    "sans": ",".join(
                        x["value"]
                        for x in details["extensions"]["subAltNames"]["names"]
                    ),
                    "authority_name": details["authority"]["name"],
                    "validity_start": details["validityStart"],
                    "validity_end": details["validityEnd"],
                }
            ),
        )

        new_cert = certificate_service.reissue_certificate(certificate, replace=True)
        log_data["message"] = f"New certificate named:{new_cert.name}"
        current_app.logger.info(log_data)

    log_data["message"] = "reissuance completed"
    current_app.logger.info(log_data)
    metrics.send(f"{function}.success", "counter", 1)
    return log_data