Merge branch 'master' into moving-cronjobs-to-celery-v2

This commit is contained in:
Hossein Shafagh 2019-07-30 14:13:59 -07:00 committed by GitHub
commit 0f591e9a3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 8 deletions

View File

@ -3,7 +3,9 @@ Helper Class for Redis
""" """
import redis import redis
import sys
from flask import current_app from flask import current_app
from lemur.extensions import sentry
from lemur.factory import create_app from lemur.factory import create_app
if current_app: if current_app:
@ -23,7 +25,19 @@ class RedisHandler:
def redis(self, db=0): def redis(self, db=0):
# The decode_responses flag here directs the client to convert the responses from Redis into Python strings # The decode_responses flag here directs the client to convert the responses from Redis into Python strings
# using the default encoding utf-8. This is client specific. # using the default encoding utf-8. This is client specific.
function = f"{__name__}.{sys._getframe().f_code.co_name}"
try:
red = redis.StrictRedis(host=self.host, port=self.port, db=self.db, encoding="utf-8", decode_responses=True) red = redis.StrictRedis(host=self.host, port=self.port, db=self.db, encoding="utf-8", decode_responses=True)
red.set("test", 0)
except redis.ConnectionError:
log_data = {
"function": function,
"message": "Redis Connection error",
"host": self.host,
"port": self.port
}
current_app.logger.error(log_data)
sentry.captureException()
return red return red

View File

@ -33,22 +33,22 @@ def get_dynect_session():
return dynect_session return dynect_session
def _has_dns_propagated(name, token): def _has_dns_propagated(fqdn, token):
txt_records = [] txt_records = []
try: try:
dns_resolver = dns.resolver.Resolver() dns_resolver = dns.resolver.Resolver()
dns_resolver.nameservers = [get_authoritative_nameserver(name)] dns_resolver.nameservers = [get_authoritative_nameserver(fqdn)]
dns_response = dns_resolver.query(name, "TXT") dns_response = dns_resolver.query(fqdn, "TXT")
for rdata in dns_response: for rdata in dns_response:
for txt_record in rdata.strings: for txt_record in rdata.strings:
txt_records.append(txt_record.decode("utf-8")) txt_records.append(txt_record.decode("utf-8"))
except dns.exception.DNSException: except dns.exception.DNSException:
metrics.send("has_dns_propagated_fail", "counter", 1) metrics.send("has_dns_propagated_fail", "counter", 1, metric_tags={"dns": fqdn})
return False return False
for txt_record in txt_records: for txt_record in txt_records:
if txt_record == token: if txt_record == token:
metrics.send("has_dns_propagated_success", "counter", 1) metrics.send("has_dns_propagated_success", "counter", 1, metric_tags={"dns": fqdn})
return True return True
return False return False
@ -61,12 +61,12 @@ def wait_for_dns_change(change_id, account_number=None):
status = _has_dns_propagated(fqdn, token) status = _has_dns_propagated(fqdn, token)
current_app.logger.debug("Record status for fqdn: {}: {}".format(fqdn, status)) current_app.logger.debug("Record status for fqdn: {}: {}".format(fqdn, status))
if status: if status:
metrics.send("wait_for_dns_change_success", "counter", 1) metrics.send("wait_for_dns_change_success", "counter", 1, metric_tags={"dns": fqdn})
break break
time.sleep(10) time.sleep(10)
if not status: if not status:
# TODO: Delete associated DNS text record here # TODO: Delete associated DNS text record here
metrics.send("wait_for_dns_change_fail", "counter", 1) metrics.send("wait_for_dns_change_fail", "counter", 1, metric_tags={"dns": fqdn})
sentry.captureException(extra={"fqdn": str(fqdn), "txt_record": str(token)}) sentry.captureException(extra={"fqdn": str(fqdn), "txt_record": str(token)})
metrics.send( metrics.send(
"wait_for_dns_change_error", "wait_for_dns_change_error",