1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Dyn monitor config support, includes ability to update

Also fixes some mocking data to match what the Dyn client libs are
expecting.
This commit is contained in:
Ross McFarland
2017-06-20 14:43:27 -07:00
parent 9506c682cc
commit 0e8bc9a3d7
2 changed files with 104 additions and 21 deletions

View File

@@ -133,6 +133,10 @@ class DynProvider(BaseProvider):
'AN': 17, # Continental Antartica
}
MONITOR_HEADER = 'User-Agent: Dyn Monitor'
MONITOR_PORT = 443
MONITOR_TIMEOUT = 10
_sess_create_lock = Lock()
def __init__(self, id, customer, username, password,
@@ -454,12 +458,33 @@ class DynProvider(BaseProvider):
fqdn = record.fqdn
try:
return self._traffic_director_monitors[fqdn]
monitor = self._traffic_director_monitors[fqdn]
if monitor._host != record.healthcheck_host or \
monitor._path != record.healthcheck_path:
self.log.info('_traffic_director_monitor: updating monitor '
'for %s:%s', record.fqdn, record._type)
# I can't see how to actually do this with the client lib so
# I'm having to hack around it. Have to provide all the
# options or else things complain
monitor._update({
'options': {
'host': record.healthcheck_host,
'path': record.healthcheck_path,
'port': self.MONITOR_PORT,
'timeout': self.MONITOR_TIMEOUT,
'header': self.MONITOR_HEADER,
}
})
return monitor
except KeyError:
self.log.info('_traffic_director_monitor: creating monitor '
'for %s:%s', record.fqdn, record._type)
monitor = DSFMonitor(fqdn, protocol='HTTPS', response_count=2,
probe_interval=60, retries=2, port=443,
active='Y', host=record.healthcheck_host,
timeout=10, header='User-Agent: Dyn Monitor',
probe_interval=60, retries=2,
port=self.MONITOR_PORT, active='Y',
host=record.healthcheck_host,
timeout=self.MONITOR_TIMEOUT,
header=self.MONITOR_HEADER,
path=record.healthcheck_path)
self._traffic_director_monitors[fqdn] = monitor
return monitor