def delete_acme_txt_records()

in lemur/plugins/lemur_acme/dyn.py [0:0]


def delete_acme_txt_records(domain):
    get_dynect_session()
    if not domain:
        current_app.logger.debug("delete_acme_txt_records: No domain passed")
        return
    acme_challenge_string = "_acme-challenge"
    if not domain.startswith(acme_challenge_string):
        current_app.logger.debug(
            "delete_acme_txt_records: Domain {} doesn't start with string {}. "
            "Cowardly refusing to delete TXT records".format(
                domain, acme_challenge_string
            )
        )
        return

    zone_name = get_zone_name(domain)
    zone_parts = len(zone_name.split("."))
    node_name = ".".join(domain.split(".")[:-zone_parts])
    fqdn = "{0}.{1}".format(node_name, zone_name)

    zone = Zone(zone_name)
    node = Node(zone_name, fqdn)

    all_txt_records = node.get_all_records_by_type("TXT")
    for txt_record in all_txt_records:
        current_app.logger.debug("Deleting TXT record name: {0}".format(fqdn))
        try:
            txt_record.delete()
        except DynectDeleteError:
            sentry.captureException(
                extra={
                    "fqdn": str(fqdn),
                    "zone_name": str(zone_name),
                    "node_name": str(node_name),
                    "txt_record": str(txt_record.txtdata),
                }
            )
            metrics.send(
                "delete_txt_record_deleteerror",
                "counter",
                1,
                metric_tags={"fqdn": fqdn, "txt_record": txt_record.txtdata},
            )
    zone.publish()