diff --git a/docs/dynamic_records.md b/docs/dynamic_records.md index e207458..fdbb124 100644 --- a/docs/dynamic_records.md +++ b/docs/dynamic_records.md @@ -207,6 +207,7 @@ Sonar check regions (sonar_regions) possible values: | frequency | Frequency (in seconds) of health-check | 60 | | connect_timeout | Timeout (in seconds) before we give up trying to connect | 2 | | response_timeout | Timeout (in seconds) after connecting to wait for output | 10 | +| rapid_recheck | Enable or disable a second, automatic verification test before changing the status of a host. Enabling this option can help prevent false positives. | False | ```yaml @@ -218,4 +219,5 @@ Sonar check regions (sonar_regions) possible values: frequency: 60 connect_timeout: 2 response_timeout: 10 + rapid_recheck: True ``` \ No newline at end of file diff --git a/octodns/provider/ns1.py b/octodns/provider/ns1.py index 7514ee2..802758b 100644 --- a/octodns/provider/ns1.py +++ b/octodns/provider/ns1.py @@ -1068,6 +1068,11 @@ class Ns1Provider(BaseProvider): .get('healthcheck', {}) \ .get('frequency', 60) + def _healthcheck_rapid_recheck(self, record): + return record._octodns.get('ns1', {}) \ + .get('healthcheck', {}) \ + .get('rapid_recheck', False) + def _healthcheck_connect_timeout(self, record): return record._octodns.get('ns1', {}) \ .get('healthcheck', {}) \ @@ -1101,7 +1106,6 @@ class Ns1Provider(BaseProvider): self._healthcheck_response_timeout(record) * 1000, 'ssl': record.healthcheck_protocol == 'HTTPS', }, - 'frequency': self._healthcheck_frequency(record), 'job_type': 'tcp', 'name': f'{host} - {_type} - {value}', 'notes': self._encode_notes({ @@ -1109,7 +1113,8 @@ class Ns1Provider(BaseProvider): 'type': _type, }), 'policy': self._healthcheck_policy(record), - 'rapid_recheck': False, + 'frequency': self._healthcheck_frequency(record), + 'rapid_recheck': self._healthcheck_rapid_recheck(record), 'region_scope': 'fixed', 'regions': self.monitor_regions, } diff --git a/tests/test_octodns_provider_ns1.py b/tests/test_octodns_provider_ns1.py index bfaee97..01a2ab1 100644 --- a/tests/test_octodns_provider_ns1.py +++ b/tests/test_octodns_provider_ns1.py @@ -933,6 +933,10 @@ class TestNs1ProviderDynamic(TestCase): monitor = provider._monitor_gen(record, value) self.assertEquals(300, monitor['frequency']) + record._octodns['ns1']['healthcheck']['rapid_recheck'] = True + monitor = provider._monitor_gen(record, value) + self.assertTrue(monitor['rapid_recheck']) + record._octodns['ns1']['healthcheck']['connect_timeout'] = 1 monitor = provider._monitor_gen(record, value) self.assertEquals(1000, monitor['config']['connect_timeout'])